Vba: как найти последнюю использованную строку
Вы можете использовать следующий базовый синтаксис в VBA, чтобы найти последнюю использованную строку на листе Excel:
Sub FindLastRow()
Range(" D2 ")=Cells.Find("*",Range(" A1 "),xlFormulas,xlPart,xlByRows,xlPrevious,False).Row
End Sub
В этом конкретном примере выполняется поиск последней строки, использованной в текущем листе, и возвращается результат в ячейку D2 .
Если вместо этого вы хотите отобразить последнюю строку окна сообщения, вы можете использовать следующий синтаксис:
Sub FindLastRow()
Dim LastRow As Long
LastRow=Cells.Find("*", Range(" A1 "),xlFormulas,xlPart,xlByRows,xlPrevious,False).Row
MsgBox " Last Row: " & LastRow
End Sub
Следующие примеры показывают, как использовать каждый из этих методов на практике.
Пример 1. Найдите последнюю строку с помощью VBA и отобразите результаты в ячейке.
Допустим, у нас есть следующий набор данных в Excel, содержащий информацию о различных баскетболистах:
Мы можем создать следующий макрос, чтобы найти последнюю строку, использованную в этом листе Excel, и отобразить результат в ячейке D2 :
Sub FindLastRow()
Range(" D2 ")=Cells.Find("*",Range(" A1 "),xlFormulas,xlPart,xlByRows,xlPrevious,False).Row
End Sub
Когда мы запускаем этот макрос, мы получаем следующий вывод:
Обратите внимание, что ячейка D2 содержит значение 11 .
Это говорит нам о том, что последней строкой, используемой на этом конкретном листе, является строка 11.
Также стоит отметить, что если перед использованной ячейкой есть пустые ячейки, этот макрос всегда найдет последнюю использованную строку.
Например, предположим, что мы запускаем макрос для следующего набора данных:
Ячейка D2 содержит значение 16 , поскольку это последняя строка, содержащая значение.
Пример 2. Найдите последнюю строку с помощью VBA и отобразите результаты в окне сообщения.
Предположим, вместо этого мы хотим найти последнюю использованную строку на листе и отобразить номер строки в окне сообщения.
Для этого мы можем создать следующий макрос:
Sub FindLastRow()
Dim LastRow As Long
LastRow=Cells.Find("*", Range(" A1 "),xlFormulas,xlPart,xlByRows,xlPrevious,False).Row
MsgBox " Last Row: " & LastRow
End Sub
Когда мы запускаем этот макрос, мы получаем следующий вывод:
В окне сообщения сообщается, что последней строкой, используемой на листе, является строка 11 .
Примечание . Полную документацию по методу Find VBA можно найти здесь .
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в VBA:
VBA: Как рассчитать среднее значение диапазона
VBA: как подсчитать количество строк в диапазоне
VBA: Как удалить повторяющиеся значения в диапазоне