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

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.

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