Шаг 10 - Использование Range

Мы с вами будем использовать это свойтсво для выделения ячеек. Но прежде давайте просто посмотрим, как вообще можно их выделять. Конечно, если вы установите курсор на любую ячейку это то же выделение. Вы можете вводить в неё формулы или числа, менять формат. Выделить можно и несколько ячеек. Если установить курсор в одну ячейку и не отпуская левую кноку мыши тащить, то выделится целый диапазон. Так же можно выделять отдельные ячейки, как на рисунке ниже.

10_1.gif (5774 b)

Реализуется это довольно просто. Выделяете первую ячейку, держите клавишу Ctrl и не отпуская её другие ячейки. С выделенными диапазовами можно проводить большое количество операций. Вот для программной реализации этих возможностей и служит свойтсво Range. Оно есть у очень многих обьектов Excel.

Этот пример показывает как выделить ячейку и поместить туда число.

Sub Test()
	With Application.Workbooks.Item("Test.xls")
		Worksheets("Лист2").Activate
		Range("A2") = 2
		Range("A3") = 3
	End With
End Sub

Следует обратить внимание, что для нормальной работы этого метода рабочая книга и лист дожны быть активными, иначе возникнет ошибка. Кроме того, наверно, надо перед кадым его использованием указывать книгу и лист, с которым работаем, дабы не внести изменения в другой, чему конечно пользователь или Вы будете рады...

С помощью этого метода можно помещать и формулы:

......
Range("A4") = "=A2+A3"
......

Можно указать и целый диапазон:

......
Range("A2:A5") = 2
......

Если вам захочется наоборот получить из ячейкм формулу или значение, то Вам ни кто не мешает сделать вот так:

Sub Test()
	With Application.Workbooks.Item("Test.xls")
		Worksheets("Лист2").Activate
		Range("A2") = 2
		Range("A3") = "=A2+2"
		MsgBox Range("A3").Formula + "  - " + Str(Range("A3").Value)
	End With
End Sub

Следующий пример очень важен, он показывает возможности абсолютной и относительной адресации. Мы создаем обьект типа Range, а на основе его производим адресацию. В следующем примере число поместится не в A1, а в D3. То есть у нас есть возможность выделять диапазон по абсолютному адресу, а внутри его использовать относительную адресацию.

Sub Test()
	With Application.Workbooks.Item("Test.xls")
		Worksheets("Лист2").Activate
		Dim HelloRange As Range
		Set HelloRange = Range("D3:D10")
		HelloRange.Range("A1") = 3
	End With
End Sub

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