eXcellence-team eXcellence

Оператор With

В VBA доступ к свойствам и методам объекта осуществляется через точку. Например ActiveSheet.Cells(1,1). Если нужно обратиться к нескольким свойствам одного объекта, то придется каждый раз писать имя этого объекта. Но есть способ этого избежать. Оператор With используется для указания обьекта, с которым мы будем работать. Это выглядит так:

With объект
  операции с объектом
End With

Рассмотрим пример. В нижеприведенном коде выводятся имя и свойство видимости объекта таблицы:

Sub Test()
  MsgBox (Application.Worksheets.Item(1).Name)
  MsgBox (Str(Application.Worksheets.Item(1).Visible))
End Sub

Используя With это можно сделать так:

Sub Test()
  With Application
   With .Worksheets
    MsgBox (.Item(1).Name)
    MsgBox (Str(.Item(1).Visible))
   End With
  End With
End Sub

Используя With можно получить доступ и к структурам, определенным пользователем:

'----------- Описание структуры --------
Type Cars
  Vendor As String
  Model1 As String
  Model2 As String
End Type

'----------- Использование --------

Sub Test()
 Dim MyCars As Cars

 With MyCars
   .Vendor = "Ford"
   .Model1 = "Fiesta"
   .Model2 = "Focus"
   MsgBox (.Vendor)
 End With

End Sub