Давайте попробуем разобрать это:
Rows
возвращает коллекцию Range
объектов на активном листе; каждый объект Range
представляет одну строку.
Rows.Count
возвращает количество возможных строк на листе. Это число зависит от того, какую версию Excel вы используете; в моем случае это 1048576
.
"A" & Rows.Count
возвращает адрес последней ячейки в столбце A или A1048576
Range("A" & Rows.Count)
возвращает объект Range
, представляющий последняя ячейка в столбце A.
Вызов метода End
:
Range("A" & Rows.Count).End(xlUp)
возвращает новый объект Range
, конец которого был перемещен вверх от конца предыдущего диапазона. Другими словами, новый объект Range
представляет последнюю использованную ячейку в столбце A.
Наконец, мы хотим получить номер строки последней использованной ячейки, используя свойство Row
; и мы будем хранить это число в переменной lr
.
lr = Range("A" & Rows.Count).End(xlUp).Row
Давайте посмотрим на следующую строку:
Range("A" & lr)
возвращает объект Range
, представляющий ячейка в столбце A и номер строки в lr
, или последняя использованная ячейка в столбце A.
Мы хотим вызвать метод AutoFill
, чтобы заполнить значения из предыдущего набора ячеек в новый набор ячеек. В этом случае мы хотим автоматически заполнить ячейку в предыдущем ряду ячейкой в следующем ряду. Мы можем сделать это, передав объект Range
, представляющий последнюю использованную ячейку вместе с новой ячейкой, в параметр Destination
.
Мы можем получить такое Range
, используя метод Resize
, передавая 2
как число строк в новом Range
:
Range("A" & lr).Resize(2)
и вызывая метод AutoFill
:
Range("A" & lr).AutoFill Destination:=Range("A" & lr).Resize(2)
Но обратите внимание, что есть Есть разные способы автозаполнения: мы можем автоматически заполнить те же значения, что и в предыдущих ячейках. Чтобы указать, что мы хотим обрабатывать предыдущие значения как серию для создания новых значений, нам нужно передать тип автозаполнения:
Range("A" & lr).AutoFill Destination:=Range("A" & lr).Resize(2), Type:=xlFillSeries
VBA-ссылки
Ссылки на объектную модель Excel
Обратите внимание, что Rows и Range являются членами недокументированного объекта Global , но они работают так же, как и соответствующие свойства объекта Range .