复制相同的select在几张

我有以下的VBAmacros:

Sub test() For Each wks In ThisWorkbook.Worksheets Range("J1:Q300").Copy Range("A301:H601").PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False Next End Sub 

我的想法是在我的Excel文件的100张纸上复制范围“J1:Q300”到“A301:H601”。 上面的macros没有给我任何错误消息,但似乎只运行在第一张表。

你有什么想法可能是我的代码中的错误?

您需要将当前的wks对象添加到您的范围:

 Sub test() Dim wks As Worksheet For Each wks In ThisWorkbook.Worksheets wks.Range("J1:Q300").Copy wks.Range("A301:H601").PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False Next wks End Sub 

如果您只使用Range(),您将始终引用当前活动的工作表。
您必须更改当前的活动工作表或通过提供wks.Range()更具体:

 Sub test() For Each wks In ThisWorkbook.Worksheets wks.Range("J1:Q300").Copy wks.Range("A301:H601").PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False Next End Sub