Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.04.2009, 02:18   #1
alex181264
 
Регистрация: 13.04.2009
Сообщений: 3
По умолчанию Как оптимизировать плиззз

Функция Select его заменители - как сделать что бы не блымали окна при выполнгении макроса когда он обращается к другим книгам
ли как исправить код -
Sheets("input Draft").Select
Range("H1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("C1").Select
Selection.copy
Windows("TABLE1.xls").ActiveSheet.R ange("C4").Past eSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Windows("Hourly_Rate_Sheet.xls").Ac tiveSheet.Range ("C4").copy
Windows("TABLE1.xls").ActiveSheet.R ange("C5").Past eSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Windows("Hourly_Rate_Sheet.xls").Ac tiveSheet.Range ("C7").copy
Windows("TABLE1.xls").ActiveSheet.R ange("C6").Past eSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("Hourly_Rate_Sheet.xls").Ac tiveSheet.Range ("C10").copy
Windows("TABLE1.xls").ActiveSheet.R ange("C7").Past eSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("Hourly_Rate_Sheet.xls").Ac tiveSheet.Range ("C13").copy
Windows("TABLE1.xls").ActiveSheet.R ange("C8").Past eSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("Hourly_Rate_Sheet.xls").Ac tiveSheet.Range ("C16").copy
Windows("TABLE1.xls").ActiveSheet.R ange("C9").Past eSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("Hourly_Rate_Sheet.xls").Ac tiveSheet.Range ("C19").copy
Windows("TABLE1.xls").ActiveSheet.R ange("C10").Pas teSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("Hourly_Rate_Sheet.xls").Ac tiveSheet.Range ("C22").copy
Windows("TABLE1.xls").ActiveSheet.R ange("C11").Pas teSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("Hourly_Rate_Sheet.xls").Ac tiveSheet.Range ("C25").copy
Windows("TABLE1.xls").ActiveSheet.R ange("C12").Pas teSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("Hourly_Rate_Sheet.xls").Ac tiveSheet.Range ("C28").copy
Windows("TABLE1.xls").ActiveSheet.R ange("C13").Pas teSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("Hourly_Rate_Sheet.xls").Ac tiveSheet.Range ("C31").copy
Windows("TABLE1.xls").ActiveSheet.R ange("C14").Pas teSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("Hourly_Rate_Sheet.xls").Ac tiveSheet.Range ("C34").copy
Windows("TABLE1.xls").ActiveSheet.R ange("C15").Pas teSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("Hourly_Rate_Sheet.xls").Ac tiveSheet.Range ("C37").copy
Windows("TABLE1.xls").ActiveSheet.R ange("C16").Pas teSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("Hourly_Rate_Sheet.xls").Ac tiveSheet.Range ("C40").copy
Windows("TABLE1.xls").ActiveSheet.R ange("C17").Pas teSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("Hourly_Rate_Sheet.xls").Ac tiveSheet.Range ("C43").copy
Windows("TABLE1.xls").ActiveSheet.R ange("C18").Pas teSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("Hourly_Rate_Sheet.xls").Ac tiveSheet.Range ("C46").copy
Windows("TABLE1.xls").ActiveSheet.R ange("C19").Pas teSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("Hourly_Rate_Sheet.xls").Ac tiveSheet.Range ("C49").copy
Windows("TABLE1.xls").ActiveSheet.R ange("C20").Pas teSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("Hourly_Rate_Sheet.xls").Ac tiveSheet.Range ("C52").copy
Windows("TABLE1.xls").ActiveSheet.R ange("C21").Pas teSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False


Раздел: Microsoft Office Excel
Создать новую тему
alex181264 вне форума Ответить с цитированием
Старый 13.04.2009, 05:37   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Попробуйте так:
Код:
Sub test()
    Dim Hourly As Worksheet, TABLE1 As Worksheet

    Set Hourly = Workbooks("HourlyRateSheet.xls").Worksheets("ИмяНужногоЛистаВкниге_HourlyRateSheet")
    Set TABLE1 = Workbooks("TABLE1.xls").Worksheets("ИмяНужногоЛистаВкниге_TABLE1")

    TABLE1.[c7] = Hourly.[c10]    ' копируем только значение
    TABLE1.[c8] = Hourly.[c13]    ' копируем только значение
    ' ... далее идёт много-много таких строчек
    
    Hourly.[c28].Copy TABLE1.[c13]  ' копируем вместе с форматированием
End Sub
Не забудьте заменить в коде имена листов.
Оба файла на момент запуска макроса должны быть открыты.
EducatedFool вне форума Ответить с цитированием
Старый 13.04.2009, 06:05   #3
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Ваш код начинается с того, что в ячейку "H1" листа "input Draft" вставляется какое-то уже ранее скопированное значение неизвестной ячейки. Это не понятно (поэтому, данная строка в коде закомментирована). Что касается остального кода, то хорошо бы знать имена листов. Так, пусть, например, лист в книге "TABLE1.xls", в который нужно вставить данные, называется "DestSheet", а лист в книге "Hourly_Rate_Sheet.xls", откуба берутся денные, имеет имя "SourSheet" (в коде макроса поменяйте эти имена на действительные). Тогда макрос будет достаточно простой:
Код:
Sub Main()
    Dim x As Range, i As Long
    Application.ScreenUpdating = False
    'Sheets("input Draft").[H1].PasteSpecial Paste:=xlPasteValues
    With Workbooks("Hourly_Rate_Sheet.xls").Sheets("SourSheet")
        Set x = Union(.[C1], .[C4], .[C7], .[C10], .[C13], .[C16], .[C19], .[C22], .[C25], .[C28], .[C31], _
            .[C34], .[C37], .[C40], .[C43], .[C46], .[C49], .[C52]): i = 4
        For Each Cell In x
            Workbooks("TABLE1.xls").Sheets("DestSheet").Cells(i, "C") = Cell.Value: i = i + 1
        Next
    End With
End Sub
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 13.04.2009, 06:27   #4
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Можно еще чуть проще:
Код:
Sub Main()
    Dim x As Range
    Application.ScreenUpdating = False
    With Workbooks("Hourly_Rate_Sheet.xls").Sheets("SourSheet")
        Set x = Union(.[C1], .[C4], .[C7], .[C10], .[C13], .[C16], .[C19], .[C22], .[C25], .[C28], .[C31], _
            .[C34], .[C37], .[C40], .[C43], .[C46], .[C49], .[C52])
        x.Copy: Workbooks("TABLE1.xls").Sheets("DestSheet").[C4].PasteSpecial Paste:=xlPasteValues
    End With
End Sub
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оптимизировать код. Манжосов Денис :) Общие вопросы Delphi 1 20.10.2008 19:06
Кто поможет оптимизировать прогу, а то я уже оптимизировал как мог :) Droid Помощь студентам 7 12.05.2008 20:56
Как оптимизировать запрос MySQL с выборкой из двух таблиц. Johnatan SQL, базы данных 6 13.04.2008 03:10
Оптимизировать код NeiL Помощь студентам 2 21.02.2008 08:57
как может оптимизировать в фунцию? w1ze Помощь студентам 2 07.01.2008 23:19