Задание объектной переменной
Объектные переменные
End Sub
End Sub
Преимущества переменных
End Sub
Глядя на предыдущий пример, Вы, вероятно, подумали: «Зачем же вообще нужны переменные?» Прежде всего, они облегчают написание программы, особенно когда Вам приходится использовать некоторое значение несколько раз. Допустим, Вам нужно присвоить ячейкам диапазона A1 второго, третьего и четвертого листов значение, содержащееся в этой же ячейке первого листа. Вот как будет выглядеть программа без переменных:
Sub ЗадатьЗначения()
Worksheets(2).Range("A1").Value = Worksheets(1).Range("A1").Value
Worksheets(3).Range("A1").Value = _
Worksheets(1).Range("A1").Value
Worksheets(4).Range("A1").Value = _
Worksheets(1).Range("A1").Value
Примените переменную, и программа станет короче (по числу символов) и понятнее:
Sub ИспользованиеПеременной()
Dim Num1 As Integer
Num1 = Worksheets(1).Range("A1").Value
Worksheets(2).Range("A1").Value = Num1
Worksheets(3).Range("A1").Value = Num1
Worksheets(4).Range("A1").Value = Num1
|
|
Переменные не только сократят код и сделают его более читаемым. Они еще и ускорят его выполнение. Программа ИспользованиеПеременной, например, работает быстрее, чем ЗадатьЗначения. О скорости мы Вам расскажем чуть позже, а пока лишь запомните, что любое обращение к объекту, методу или свойству требует от Excel определенных действий и потому занимает некоторое время. В программе ЗадатьЗначенияколичество таких обращений можно определить по числу точек в инструкциях. В строках со второй по четвертую они использованы 12 раз, по четыре в каждой строке. В строках 3—6 программы ИспользованиеПеременнойточка встречается 8 раз, по две на строку. Предположим, что на обработку каждой точки требуется одно и то же время, тогда, подсчитав, получим, что программа ИспользованиеПеременнойвыполняется за 2/3 времени, затрачиваемого на работу ЗадатьЗначения. Так все обстоит и в действительности. Конечно, для таких коротких примеров различие в скоростях заметить невозможно, но в длинных и сложных приложениях разница становится весьма ощутимой.
Объектная переменная используется для ссылки на объект. Когда Вы хорошенько разберетесь в языке VBA, то поймете неоценимую пользу таких переменных: они позволяют существенно сократить тексты программ. Код, написанный с их помощью, легче читается и гораздо быстрее выполняется. Примеры на нескольких следующих страницах наглядно это демонстрируют.
Объектные переменные объявляются и задаются немного иначе, чем остальные. Во фрагменте кода, показанном ниже, приведены инструкции объявления и присваивания.
Dim Range1 As Object
Set Range1 = Worksheets(1).Range("A1")
|
|
Обратите внимание, что объявление производится практически так же, как и для других типов, хотя в данном случае Вы можете указать конкретный тип объекта (об этом чуть позже). Теперь разберемся со второй строкой (помните, что оператор присваивания для объектной переменной всегда начинается словом Set!!!):
Set Ключевое слово для присваивания значения объектной переменной
Range1 Имя переменной
= Оператор присваивания
Worksheets(l).Range("A1") Объект, присваиваемый переменной
Рассмотрим на примере, что можно делать с переменной типа Object. Зададим с помощью переменных Object и Integer свойство Value объекта Range, которое затем отображается в информационном окне.
Sub Объектная переменная()
Dim Num2 As Long
Num2 = 100000
Dim Range1 As Object
Set Range1 = Worksheets(1).Range("A1")
Range1.Value = Num2
MsgBox Range1.Value