Это будет работать независимо от версии Excel (2003, 2007, 2010). Первый имеет 65536 строк на листе, в то время как последние два имеют миллион строк или около того. Sheet1.Rows.Count
возвращает этот номер в зависимости от версии.
numofrows = Sheet1.Range("A1").Offset(Sheet1.Rows.Count - 1, 0).End(xlUp).Row
или эквивалентный, но более короткий
numofrows = Sheet1.Cells(Sheet1.Rows.Count,1).End(xlUp)
При этом выполняется поиск снизу столбца A первой непустой ячейки и номер ее строки.
Это также работает, если у вас есть данные, которые идут дальше вниз в других столбцах. Так, например, если вы берете данные примера и также записываете что-то в ячейку FY4763, вышеприведенное все равно будет правильно возвращать 9 (а не 4763, что любой метод, включающий свойство UsedRange
, мог бы некорректно возвращать).
Обратите внимание, что на самом деле, если вы хотите ссылку на ячейку, вы должны просто использовать следующее. Вам не нужно сначала получать номер строки, а затем создавать ссылку на ячейку.
Set rngLastCell = Sheet1.Range("A1").Offset(Sheet1.Rows.Count - 1, 0).End(xlUp)
Обратите внимание, что этот метод завершается ошибкой в некоторых крайних случаях:
- Последняя строка содержит данные
- Последние строки скрыты или отфильтрованы
Так что будьте осторожны, если вы планируете использовать строку 1 048 576 для этих вещей!