|
Инструкция With впервые появилась в Visual Basic for Application (VBA)
в MS Excel 95.
Основные преимущества инструкции With :
Уменьшает размер об'ем VBA кода
Делает его производительней
Для того, чтобы убедиться в этом, нам надо сравнить два VBA кода.
Пример :
Sub TestNoWith()
ActiveWorkbook.Worksheets(1).Range("A1").Value = "S.O.S."
ActiveWorkbook.Worksheets(1).Range("A1").Font.Name = "Arial"
ActiveWorkbook.Worksheets(1).Range("A1").Font.Bold = True
ActiveWorkbook.Worksheets(1).Range("A1").Font.Strikethrough = True
ActiveWorkbook.Worksheets(1).Range("A1").Font.Size = 20
ActiveWorkbook.Worksheets(1).Range("A1").Font.ColorIndex = 3
End Sub
В этом примере мы использовали свойство Value об'екта
Range для ввода в ячейку определённого значения, а также изменили
некоторые свойства об'екта Font, для изменения представления
введённых в ячейку данных, т.е проще говоря применили
форматирование
Для этого нам пришлось обращаться к об'ектам и их свойствам
23 раза, если считать по числу точек в инструкциях. При этом на обработку
каждого обращения уходит некоторое количество времени.
Пример, c использованием инструкции With :
Sub TestYesWith()
With ActiveWorkbook.Worksheets(1).Range("A1")
.Value = "S.O.S."
.Font.Name = "Arial"
.Font.Bold = True
.Font.Strikethrough = True
.Font.Size = 20
.Font.ColorIndex = 3
End With
End Sub
Во время выполнения этого VBA кода нам пришлось всего 13 раз
использовать обращение к об'ектам и их свойствам. Так что мы можем
быть уверены, что увеличили скорость выполнения этой программы.
Последнее утверждение особенно актуально при работе с большим об'емом
информации.
На самом деле этот код также можно сократить, всего до 9 обращений.
Пример использования инструкции With (сокращённый вариант) :
Sub TestYesWith2()
With ActiveWorkbook.Worksheets(1).Range("A1")
.Value = "S.O.S."
With .Font
.Name = "Arial"
.Bold = True
.Strikethrough = True
.Size = 20
.ColorIndex = 3
End With
End With
End Sub
|
|