我有以下VBA宏:
Sub test()
For Each wks In ThisWorkbook.Worksheets
Range("J1:Q300").Copy
Range("A301:H601").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Next
End Sub
想法是复制范围" J1:Q300"到" A301:H601"在我的Excel文件中的每100张纸中。上面的宏没有给我任何错误信息,但似乎只在第一张表中运行。
您是否知道我的代码中可能存在哪些错误?
答案 0 :(得分:1)
如果您只使用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
答案 1 :(得分:1)
您需要将当前 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