Вас может заинтересовать, а как можно сдвинуться влево или вправо назад или вперед от текущей ячейки. Для этого у объекта Range есть метод Offset, который и позволяет производить подобные действия.
Sub Test()
Dim cur_range As Range
Set cur_range = Range("A1")
Set cur_range = cur_range.Offset(1, 0)
Debug.Print cur_range.Address
End Sub
А вот результат работы. Мы от текущего объекта сдвинулись влево на 1 колонку.
$A$2
Если вы хотите узнать максимальные размеры листа, то у Вас есть возможность это сделать используя UsedRange. У вас будет объект типа Range, из которого вы сможете узнать максимальную колонку или строку.
Sub Test()
With ActiveSheet
Dim cur_range As Range
Set cur_range =.UsedRange
Debug.Print cur_range.Address
End With
End Sub
Адресовать ячейки можно и двумя цифрами по колонки и сроке. Это избавляет Вас от утомительного разбора адресов типа $A10. Так как адрес строка придеться её резать и собирать. Использования Cells(x,y) очень гибко в использовании и позволяет строить легкие циклы. Пример ниже находит на листе левый верхний угол из всех ячеек с введенными данными и в эту ячейку записывает слово.
Sub Test()
' объект Range
Dim cur_range As Range
' Весь лист
With ActiveSheet
Set cur_range =.UsedRange
Debug.Print cur_range.Address
' у меня печатает $C$5:$J$48
Dim y_min As Integer
' минимальная колонка
y_min = cur_range.Columns.Column
Dim x_min As Integer
' минимальная строка
x_min = cur_range.Rows.Row
Set cur_range = Range(Cells(x_min, y_min), Cells(x_min, y_min))
cur_range = "lef up"
End With
End Sub