double arrow

Шаг 32 - Перемещение по ячейкам и информация

Вас может заинтересовать, а как можно сдвинуться влево или вправо назад или вперед от текущей ячейки. Для этого у объекта 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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



Сейчас читают про: