Неявное описание переменных и тип Variant
End Sub
End Sub
Преимущества объектных переменных
Как уже было сказано, объектные переменные заметно сокращают время, необходимое для написания кода, облегчают его чтение и повышают производительность. Сокращение времени достигается за счет замены длинного обращения к объекту одним словом (именем переменной). Например, в следующей программе задаются свойства Value, RowHeight и ColumnWidth объекта Range; значение свойства Value отображается в информационном окне; а затем вызывается метод ClearContents. В первом фрагменте для обращения к свойствам и методам объекта Range указан путь к нему, начиная от объекта Worksheet.
Sub RangeObject()
Worksheets(1).Range("A1").Value = 25
Worksheets(1).Range("A1").RowHeight = 50
Worksheets(1).Range("A1").ColumnWidth = 50
MsgBox Worksheets(1).Range("A1").Value
Worksheets(1).Range("A1").ClearContents
А теперь перепишем эту программу, используя для ссылки на объект Range переменную.
Sub RangeObjectVariable()
Dim Range1 As Range
Set Range1 = Worksheets(1).Range("A1")
Range1.Value = 25
|
|
Range1.RowHeight = 50
Range1.ColumnWidth =50
MsgBox Range1.Value
Range1.ClearContents
Процедура RangeObjectVariable выглядит проще, к тому же для ее ввода Вам пришлось меньше нажимать на клавиши. Из этого примера ясно видно, что все действия совершаются с одним и тем же объектом.
Аргументируя ускорение программы, мы можем обратиться к расчетам, которые уже использовали ранее. В программе RangeObjectVariable шесть обращений к объектам (определяется по числу точек), в программе RangeObject их десять. Поскольку на каждое обращение затрачивается приблизительно равное время, вторая программа работает почти в два раза быстрее первой. Здесь разница незаметна, но она станет очевидной, например, в сложных циклах, выполняемых сотни раз.
В VBA есть одна интересная возможность, которой с удовольствием пользуются ленивые разработчики, но отвергают программисты, привыкшие работать организованно. Это неявное описание переменных. Вы, вероятно, обратили внимание, что все переменные, использованные в примерах программ, описаны в инструкциях Dim. В действительности, делать это не обязательно. Если VBA не находит описания переменной, он определяет ее самостоятельно. Рассмотрим следующий пример.
Sub С_ОбъявлениемПеременной()
Dim String1 As String
String1 = "Привет!"
MsgBox String1
Если Вы удалите из этой программы вторую строку, результат ее действия не изменится:
Sub БезОбъявленияПеременной()
String1 = "Привет!"
MsgBox String1