Копирование строки и вставка ее внизу другого листа - PullRequest
0 голосов
/ 18 декабря 2018

Я хочу скопировать строку 2 с листа и вставить ее в последнюю пустую строку на другом листе (Лист2).Пока что это то, что я придумал:

Sub testj()

Rows(2).Copy
Worksheets("Sheet2").Range("A1").End(xlDown).Offset(1, 0).EntireRow.Insert

End Sub

Это дает ошибку: индекс за пределами диапазона.Кажется, я не могу понять, что с ним не так.

1 Ответ

0 голосов
/ 18 декабря 2018

Переименованная рабочая таблица?!

Когда вы запускаете свой код и нет рабочей таблицы с именем «Лист2» ​​(на вкладке ):

Ошибка времени выполнения: нижний индекс '9' выходит за пределы диапазона

Если у вас нет данных от А2 до низа на листе с именем «Лист2»:

Выполнитьошибка «1004»: ошибка приложения или объекта

Вывод: возможно, вы случайно переименовали «Sheet2».Чтобы избежать этого, вы можете использовать кодовое имя листа следующим образом:

Rows(2).Copy
Sheet2.Range("A1").End(xlDown).Offset(1, 0).EntireRow.Insert

Теперь вы можете переименовать лист в Tab по своему желанию.

Последняя использованная ячейка в столбце

Если вы на 100% уверены, что есть данные хотя бы в первых двух строках и ваши данные являются смежными (без пустых ячеек), ваш код работает нормально,Если данные в столбце не являются смежными, первая пустая ячейка, в которой они останавливаются, не будет последней.Таким образом, вы будете перезаписывать существующие данные.

Поэтому последняя ячейка в столбце в основном рассчитывается снизу следующим образом:

Rows(2).Copy
Sheet2.cells(Rows.count,"A").End(xlUp).Offset(1, 0).EntireRow.Insert

Это имеет ограничение, которое никогда не будет копироваться в строку 1., но поскольку у вас там обычно есть заголовки, это нормально.

Способ без ограничений - использование Find Method .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...