Представьте себе следующие данные в столбце A:A
:
Теперь, чтобы зациклить ваш столбец, вы можете использовать:
Sub Test()
With Sheet.Range("A:A") 'Change to your own sheets CodeName
For Each cl In .SpecialCells(xlCellTypeConstants, 1)
Debug.Print cl.Address
Next cl
End With
End Sub
Поскольку вы говорите, что имеете числовые значения, мы можем перебрать столбец A:A
с SpecialCells
. Используйте xlCellTypeConstants
, чтобы включить только ячейки с константами в них, и добавьте перечисление XlSpecialCellsValue
(xlNumbers
или просто 1
для числовых констант), которое затем можно зациклить.
Он будет перебирать только ячейки, содержащие числовые значения. Поэтому вам не нужно пытаться найти последнюю строку, а также не нужно зацикливать все ячейки и проверять, является ли значение числовым. Этот метод также позволяет использовать другие значения текстовых типов данных в диапазоне, из которого вы работаете.
Если необходимо получить последнюю строкуудерживая числовое значение, мы можем немного изменить код, чтобы посмотреть на последний Area
в коллекции Areas
(поскольку у нас может быть несмежный объект Range
). Теперь последняя строка может выглядеть следующим образом:
Sub Test()
Dim rng As Range
Dim lr As Long
With Sheet1.Range("A:A") 'Change to your own sheets CodeName
Set rng = .SpecialCells(xlCellTypeConstants, 1)
lr = rng.Areas(rng.Areas.Count).Cells(rng.Areas(rng.Areas.Count).Count, 1).Row
End With
End Sub
Для удобства чтения вам может быть проще следующее:
Sub Test()
Dim rng As Range
Dim lr As Long
With Sheet1.Range("A:A") 'Change to your own sheets CodeName
Set rng = .SpecialCells(xlCellTypeConstants, 1)
Set rng = rng.Areas(rng.Areas.Count)
lr = rng.Cells(rng.Cells.Count).Row
End With
End Sub
Это избавит от необходимости использовать формулу / функцию массивачтобы получить последнюю строку, содержащую числовое значение.