Короче, что-то не так с линией
Sheets("Sheet2").Range(Cells(b, 1), Cells(b, 7)).Copy Sheets("Sheet1").Cells(a, 6)
измените его на ниже, это должно решить вашу проблему.
Sheets("Sheet2").Range(Sheets("Sheet2").Cells(b, 1), Sheets("Sheet2").Cells(b, 7)).Copy Sheets("Sheet1").Cells(a, 6)
Как я отлаживал:
Когда ваш код запущен, нажмите "Отладка", когда появится ошибка 1004 времени выполнения. 4-я строка выделена желтым цветом (т. Е. VBA обнаруживает ошибку при выполнении этой строки). Так вот с чего мы начнем.
Чтобы устранить проблему, мы можем навести курсор на различные переменные, чтобы посмотреть на ее значение. b = 7, a = 8, кажется, хорошо.
Удаление параметров для функции Copy , оставляя только все перед .Copy ... проблема все еще там. Так что должно быть что-то не так с
Sheets("Sheet2").Range(Cells(b, 1), Cells(b, 7)).Copy
Глядя на помощь по .Range и обратите внимание, что вам нужно указать Sheet . И проблема исправлена.