Перейти к содержимому

VBA Excel. Номер последней заполненной строки

Поиск номера последней заполненной строки в таблице Excel с помощью кода VBA для одной, двух и более таблиц на листе без записей во внешних ячейках и с записями.

  1. Одна таблица без внешних записей
  2. Две и более таблиц без внешних записей
  3. Любое количество таблиц с наличием внешних записей

Номер последней заполненной строки в таблице Excel обычно используется в коде VBA для определения первой пустой строки для добавления новой записи, для задания интервала поиска и обработки информации с помощью цикла For ... Next, для указания границ диапазона, присваиваемого объектной переменной.

Одна таблица без внешних записей

Для таблиц без пустых строк и без посторонних записей вне таблицы, представляющих собой простые базы данных в Excel (наборы записей):

Одна таблица на листе Excel

Dim PosStr As Long
'PosStr - переменная, которой присваивается 
'значение номера строки последней записи

'Вариант 1
PosStr = UsedRange.Rows.Count
'Вариант 2
PosStr = Cells(1, 1).End(xlDown).Row
'Вариант 3
PosStr = Cells(1, 1).CurrentRegion.Rows.Count
'Вариант 4
PosStr = WorksheetFunction.CountA(Range("A:A"))
'Вариант 5
PosStr = Cells.SpecialCells(xlLastCell).Row

Для Варианта 2 и Варианта 4 подразумевается, что в первом столбце таблицы нет пустых ячеек.

Две и более таблиц без внешних записей

Для двух и более таблиц, расположенных рядом по горизонтали на одном листе, на котором нет записей вне таблиц:

Две таблицы на листе Excel

'Для Таблицы 1
'Вариант 1
PosStr = Cells(2, 1).End(xlDown).Row
'Вариант 2
PosStr = Cells(2, 1).CurrentRegion.Rows.Count
'Вариант 3
PosStr = WorksheetFunction.CountA(Range("A:A"))

'Для Таблицы 2
'Вариант 1
PosStr = Cells(2, 6).End(xlDown).Row
'Вариант 2
PosStr = Cells(2, 6).CurrentRegion.Rows.Count
'Вариант 3
PosStr = WorksheetFunction.CountA(Range("F:F"))

Для Варианта 1 и Варианта 3 подразумевается, что в первых столбцах таблиц нет пустых ячеек. Если Вариант 3 применить к другим столбцам, результат придется увеличить на единицу (пустые ячейки над шапками таблиц).

Любое количество таблиц с наличием внешних записей

Для любого количества таблиц, расположенных в любом месте листа, на котором могут быть записи вне таблиц:

'Для таблицы, верхний левый угол которой находится в ячейке Cells(20, 10)
'Вариант 1
PosStr = Cells(20, 10).End(xlDown).Row
'Вариант 2
PosStr = Cells(20, 10).CurrentRegion.Rows.Count + (20 - 1)

Для Варианта 1 подразумевается, что в первом столбце таблицы нет пустых ячеек.

Если у вас на листе есть записи вне таблиц, следите за тем, чтобы таблицы были окружены пустыми ячейками или пустыми ячейками и границами листа.

Для поиска номера последней заполненной строки лучше использовать варианты кода из последнего примера для таблиц с наличием внешних записей, так как можно забыть и сделать какие-то поясняющие или напоминающие пометки в ячейках на рабочем листе и они могут отрицательно повлиять на точность вычисления номера последней строки из кода VBA Excel.

Добавить комментарий

Ваш комментарий будет опубликован после прохождения обязательной модерации. Исходящие ссылки не допускаются. Время модерации составит от нескольких минут до нескольких часов в зависимости от времени суток и занятости модератора.