跨越多个工作表的VBA

我在我的macros上执行这个代码11次

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,我可以压缩它吗?

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

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

如果你有这个代码11次通过你的代码,你应该把它变成它自己的子,并简单地称之为CopyValues()或其他东西。

或者如果代码11次是相似的但是不同的位置,你也可以传入工作簿和工作表参数:

  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"))