Как использовать вложенный оператор vba with?
Ключевые моменты
- Используйте оператор VBA With, чтобы минимизировать код.
- При использовании оператора With вы можете использовать только один объект одновременно.
Что такое VBA с декларацией
VBA With — это оператор для однократного указания объекта и последующего выполнения для него нескольких операторов. Проще говоря, используйте оператор «WITH» для указания объекта, после чего вы можете получить доступ ко всем свойствам и методам за один раз. Он начинается с «With» и заканчивается «Finish with».
Синтаксис VBA с оператором
Вот синтаксис, который вам нужно использовать для использования оператора With в VBA:
With [OBJECT] [Statement] End With

- With : это начальное ключевое слово оператора, которое сообщает VBA, что вы указываете упомянутый объект.
- Объект : Здесь вам нужно указать объект, который вы хотите использовать.
- Оператор : один или несколько операторов, которые вы хотите выполнить с указанным объектом.
- End With : это конечное ключевое слово оператора.
Пример для понимания VBA With Statement
Давайте возьмем пример, чтобы понять подробное утверждение. Допустим, вы хотите изменить цвет, размер и имя шрифта ячейки A1. Чтобы сделать эти три вещи, вам нужно получить доступ к трем различным свойствам шрифта VBA , и код будет таким:
Range("A1").Font.Color = RGB(0, 0, 255) Range("A1").Font.Size = 16 Range("A1").Font.Name = "Consolas"
Но здесь мы собираемся использовать оператор With вместо приведенного выше кода. Чтобы использовать оператор VBA With, вы можете выполнить следующие шаги:
- Сначала введите на клавиатуре «С».
- После этого используйте диапазон VBA, чтобы указать ячейку A1, используя объект шрифта, чтобы указать объект шрифта.
- Далее вам нужно ввести код трех свойств и значения, которые вы хотите применить.
- В конце используйте ключевое слово «End With», чтобы завершить утверждение.
Вот код, который вы только что написали.
Sub MyMacro() With Range("A1").Font .Color = RGB(0, 0, 255) .Size = 16 .Name = "Consolas" End With End Sub
Теперь давайте рассмотрим оба кода и попытаемся понять, в чем разница, которую мы имеем, используя оператор «With».

В первом коде вы трижды использовали объект шрифта, а затем использовали свойство, к которому хотите получить доступ и в которое хотите внести изменения.
Но во втором коде вы использовали оператор With и сразу указали объект шрифта. А затем три строки кода в операторе With для доступа к трем свойствам.
Когда вы используете оператор With и указываете объект, он сообщает VBA, что все написанные вами операторы должны выполняться с указанным объектом. Это не только дает вам структурированный код, но также ускоряет выполнение макроса и повышает его эффективность.
Вложенный с оператором
Вначале я говорил вам, что вы можете указать только один объект для использования оператора With. Но есть способ использовать с ним более одного или даже нескольких предметов. Здесь используется VBA LOOPS , и мы собираемся использовать FOR EACH LOOP для циклического перебора нескольких объектов и использования «With».
Позволь мне привести пример; вам нужно просмотреть все рабочие листы и применить все следующие действия ко всем ячейкам на каждом листе.
- Размер шрифта: 16
- Шрифт: Вердена
В книге у вас есть пять листов, как в следующем примере:

Используйте следующие шаги, чтобы написать вложенный оператор With.
- Во-первых, вы должны объявить переменную, чтобы использовать объект рабочего листа.
- После этого, как я уже сказал, вам нужно использовать For Each Loop . Итак, вам нужно написать код с циклом, который сможет проходить через все листы .
- Теперь введите оператор with, который может применить настройку шрифта , которую мы обсуждали выше. Чтобы обратиться ко всем ячейкам на листе, вы можете использовать «Ячейки» при указании темы.
Вот полный код, который вы только что написали.
Sub MyMacro() Dim ws As Worksheet For Each ws In ActiveWorkbook.Worksheets With Cells .Font.Size = 16 .Font.Name = "Verdena" End With Next ws End Sub