Оператор With...End With

Очень часто обращение к одному и тому же объекту производится несколько раз подряд. Например, изменение характеристик шрифта для выделенных ячеек выполняется так:

Selection.Font.Bold = True
Selection.Font.Italic = True
Selection.Font.Name = "Arial"
Selection.Font.Size = 10

Как видно из примера, объект Selection.Font указан четыре раза. Оператор With...End With позволяет сократить код. Оператор имеет следующий формат:

With <Объект>
   <Обращение к членам класса или полям структуры>
End With

Если применить оператор к предыдущему примеру, то код будет выглядеть так:

With Selection.Font
   .Bold = True
   .Italic = True
   .Name = "Arial"
   .Size = 10
End With

Внутри блока допустимо использование другого кода, например, можно вставить операторы ветвления или циклы. Установим размер шрифта в зависимости от условия:

Dim n As Integer
n = 5
With Selection.Font
   .Bold = True
   .Italic = True
   .Name = "Arial"
   If n = 10 Then
      .Size = 10
   Else
      .Size = 8
   End If
End With

Один оператор With...End With можно вложить в другой. Например, укажем объекты Selection и Font в разных операторах With...End With:

With Selection
   With .Font
      .Bold = True
      .Italic = True
      .Name = "Arial"
      .Size = 10
   End With
End With
Предыдущая статья Все статьи Следующая статья