跨多个工作表的VBA

时间:2013-11-25 23:24:53

标签: excel vba excel-vba

我在我的宏上执行此代码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与不同的工作表名称分开时间吗?

1 个答案:

答案 0 :(得分:4)

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

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