Зачем использовать With и End With в VBA?
Эти конструкции позволяют упростить код и улучшить его читаемость, особенно при работе с объектами. Давайте рассмотрим их использование с примерами и разъяснениями.
Конструкция представляют собой удобный способ работы с объектами, свойствами и методами. Они позволяют временно установить контекст для блока кода и обращаться к свойствам или методам объекта без необходимости повторно указывать его имя. Это уменьшает количество лишнего кода, делает код более читаемым и поддерживаемым.
Синтаксис With и End With выглядит следующим образом:
With объект
' Код, в котором используется объект
End With
Где:
- объект - это объект, с которым вы хотите работать в блоке кода.
End With используется для завершения блока With. Все операторы With должны заканчиваться End With.
Примеры использования With и End With
Пример 1: Работа с объектом Range в Excel (путь к книге может быть разным)
Sub ПримерСWith()
Dim Книга As Workbook
Set Книга =
Workbooks.Open("C:\Users\Lenovo\OneDrive\Desktop\Пример.xlsx")
With Книга.Sheets("Лист1").Range("A1:B10")
.Font.Bold = True
.Interior.Color = RGB(255, 0, 0)
.Borders.LineStyle = xlContinuous
End With
Книга.Save
Книга.Close
End Sub
В этом примере мы открываем книгу Excel, выбираем определенный лист и диапазон ячеек с помощью With. Затем мы применяем форматирование (жирный шрифт, цвет фона и границы) к этому диапазону без необходимости повторно указывать Книга.Sheets("Лист1").Range("A1:B10").
Без With это выглядело бы так:
В итоге в книге «Пример» произошли следующие изменения:
Пример 2: Избегание повторений при работе с объектами
Sub ИзбеганиеПовторений()
Dim Клетка As Range
Set Клетка = ActiveSheet.Range("A1")
With Клетка
.Value = "Значение 1"
.Font.Bold = True
End With
' Без использования With:
' ActiveSheet.Range("A1").Value = "Значение 1"
' ActiveSheet.Range("A1").Font.Bold = True
End Sub
Этот пример показывает, как можно избежать повторения объекта ActiveSheet.Range("A1") при изменении его значения и форматировании с использованием With.
В следующей статье рассмотрим конструкцию For Next в VBA.