2013-11-25 45 views
0

我在我的宏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倍。而不是使用不同的表名将整个代码11分开,我可以压缩它吗?

+0

将其添加到模块。 – user2140261

+0

[有趣的阅读](http://stackoverflow.com/questions/10714251/excel-macro-avoiding-using-select) –

回答

4

这是非常紧凑的,但也因为它避免了所有选择,激活和使用剪辑板,它也将更快。

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

如果你有这样的代码通过了你的代码的11倍,你应该把它变成自己的子,并简单地称呼其为CopyValues()什么的。

或者如果代码11次类似,但不同的位置,你也可以通过在簿和工作表PARAMS:

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

很好解释:) –

相关问题