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

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

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

  1. Таблица в верхнем левом углу
  2. Последняя строка любой таблицы

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

Переменную, которой присваивается номер последней строки, следует объявлять как Long или Variant, например: Dim PosStr As Long. В современных версиях Excel количество строк на рабочем листе превышает максимальное значение типа данных Integer.

Таблица в верхнем левом углу

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

Пример таблицы с набором данных в Excel
Пример таблицы с набором данных в Excel

Вариант 1
Основная формула для поиска последней строки в такой таблице, не требующая соблюдения каких-либо условий:
PosStr = Cells(1, 1).CurrentRegion.Rows.Count

Вариант 2
Ниже таблицы не должно быть никаких записей:
PosStr = ActiveSheet.UsedRange.Rows.Count

Вариант 3
В первом столбце таблицы не должно быть пропусков, а также в таблице должно быть не менее двух заполненных строк, включая строку заголовков:
PosStr = Cells(1, 1).End(xlDown).Row

Вариант 4
В первой колонке рабочего листа внутри таблицы не должно быть пропусков, а ниже таблицы в первой колонке не должно быть других заполненных ячеек:
PosStr = WorksheetFunction.CountA(Range("A:A"))

Вариант 5
Ниже таблицы не должно быть никаких записей:
PosStr = Cells.SpecialCells(xlLastCell).Row

Последняя строка любой таблицы

Последнюю заполненную строку для любой таблицы будем искать, отталкиваясь от ее верхней левой ячейки: Cells(a, b).

Вариант 1
Основная формула для поиска последней строки в любой таблице, не требующая соблюдения каких-либо условий:
PosStr = Cells(a, b).CurrentRegion.Cells(Cells(a, b).CurrentRegion.Cells.Count).Row

Вариант 2
Дополнительная формула с условием, что в первом столбце таблицы нет пустых ячеек:
PosStr = Cells(a, b).End(xlDown).Row

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

Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.

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

  1. Николай Зубов

    К сожалению, во всех приведенных методах непонятно, учитывается ли фильтр? То есть учитываются ли скрытые ячейки?

    1. Евгений (автор статьи)

      Добрый день, Николай!
      Скрытые строки в центре таблицы не влияют на результат. Если в скрытый диапазон входит последняя строка, результат будет зависеть от примененного выражения.

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

      Sub Test()
      Dim PosStr As Long
      PosStr = Cells(1, 1).CurrentRegion.Rows.Count
      MsgBox PosStr
      PosStr = ActiveSheet.UsedRange.Rows.Count
      MsgBox PosStr
      PosStr = Cells(1, 1).End(xlDown).Row
      MsgBox PosStr
      PosStr = WorksheetFunction.CountA(Range("A:A"))
      MsgBox PosStr
      PosStr = Cells.SpecialCells(xlLastCell).Row
      MsgBox PosStr
      End Sub
      

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

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