2013-11-25 8 views
0

я выполняю этот код в 11 раз на моей макроVBA через несколько листов

Windows("LOFORM.xls").Activate 
Sheets("Becke").Select 
Range("A6:J25").Select 
Selection.Copy 
Windows("Comp Reform LO.xls").Activate 
Sheets("Becke").Select 
Range("A6").Select 
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 

для всех различных листов. Вместо того, чтобы иметь весь этот код 11 раздельное время с разными именами листов, я могу конденсировать его?

+0

Добавьте его в модуль. – user2140261

+0

[ИНТЕРЕСНО ЧИТАТЬ] (http://stackoverflow.com/questions/10714251/excel-macro-avoiding-using-select) –

ответ

4

Это много mroe compact, но также, поскольку он позволяет избежать выбора, активирует и работает с доской для клипов, он также будет намного быстрее.

Windows("Comp Reform LO.xls").Sheets("Becke").Range("A6:J25") = _ 
Windows("LOFORM.xls").Sheets("Becke").Range("A6:J25") 

Если у вас есть этот код в 11 раз через вне вашего кода, вы должны включить его в свой собственный суб, а просто называют его CopyValues() или что-то.

Или, если код 11 раз похож, но разные места, вы также могли бы пройти в Params Workbook и рабочего листа:

Sub SampleCopyValues(DestinationWorkSheet As Worksheet) 
     DestinationWorkSheet.Range("A6:J25") = _ 
     Windows("LOFORM.xls").Sheets("Becke").Range("A6:J25") 
    End Sub 

Тогда вы могли бы назвать его как SampleCopyValues(Windows("Comp Reform LO.xls").Sheets("Becke"))

+0

Ничем не объяснено :) –

Смежные вопросы