Скопируйте тот же самый выбор в несколько листов

У меня есть следующий макрос 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» на каждом из 100 листов в моем файле Excel. Вышеприведенный макрос не дает мне сообщения об ошибке, но, похоже, работает только на первом листе.

Вы знаете, что может быть ошибкой в ​​моем коде?

Вам нужно добавить текущий объект 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 
Давайте будем гением компьютера.