Шаг 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

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.