VBA Excel
241 subscribers
88 photos
23 links
VBA Excel для начинающих. Справка по VBA Excel. Visual Basic for Applications. Справочник. Самоучитель.
Download Telegram
Оператор With

Оператор With предназначен для выполнения последовательности операторов (строк кода) для отдельного объекта или пользовательского типа данных. Применение оператора With упрощает написание и восприятие кода VBA Excel, а также ускоряет его работу.

Синтаксис оператора With:
With object
[statements]
End With


Параметры оператора With:
1️⃣ object - имя объекта или пользовательского типа данных.
2️⃣ statements - один или несколько операторов (строк кода), которые выполняются в отношении указанного объекта.

Примеры

В следующей процедуре выполняется несколько идущих подряд операторов (строк кода) в отношении одного и того же объекта Range("A1:E5"):
Sub Primer1()
    Range("A1:E5").Value = "Тест"
    Range("A1:E5").Interior.Color = vbMagenta
    Range("A1:E5").Font.Size = 14
    Range("A1:E5").Font.Color = vbYellow
    Range("A1:E5").Font.Italic = True
    Range("A1:E5").Borders.LineStyle = True
End Sub


Если в процедуре выполняется несколько идущих подряд операторов в отношении одного и того же объекта, то оператор With позволяет указать объект только один раз:
Sub Primer2()
With Range("A1:E5")
.Value = "Тест"
.Interior.Color = vbMagenta
.Font.Size = 14
.Font.Color = vbYellow
.Font.Italic = True
.Borders.LineStyle = True
End With
End Sub

Такое написание кода делает его более понятным, а выполнение – более быстрым.

Конструкции с оператором With можно вкладывать одну в другую:
Sub Primer3()
    With Range("A1:E5")
        .Value = "Тест"
        .Interior.Color = vbMagenta
            With .Font
                .Size = 14
                .Color = vbYellow
                .Italic = True
            End With
        .Borders.LineStyle = True
    End With
End Sub

Такой код удобен, когда необходимо выполнить ряд операторов по отношению к некоторому объекту [Range("A1:E5")], а также по отношению к одному из содержащихся в нем объектов [Range("A1:E5").Font].

Примечания от разработчика:

1️⃣ После входа в блок With параметр object изменить нельзя. Следовательно, один оператор With не может быть использован для изменения нескольких объектов.
2️⃣ Во вложенном блоке With необходимо указывать полные ссылки на любые элементы объекта из внешнего блока With.
3️⃣ Не рекомендуется использовать переходы в блоки With или из них.

#VBA #ExcelVBA #With #Оператор #Operator
🔄 Оператор With для упрощения работы с объектами
В VBA Excel оператор With позволяет сократить код и упростить работу с объектами, если к ним нужно обращаться несколько раз подряд. Вместо повторяющихся обращений к объекту, With позволяет группировать операции внутри одного блока.

Почему стоит использовать With?
🔹 Уменьшает объем кода – не нужно дублировать имя объекта.
🔹 Ускоряет выполнение – VBA тратит меньше ресурсов на поиск объекта.
🔹 Делает код чище и понятнее.

📌 Пример без With (менее эффективно):
Sub WithoutWith()
Sheets("Лист1").Range("A1").Value = "Заголовок"
Sheets("Лист1").Range("A1").Font.Bold = True
Sheets("Лист1").Range("A1").Font.Size = 14
Sheets("Лист1").Range("A1").Interior.Color = RGB(200, 200, 255)
End Sub


📌 Тот же код с With (более эффективно):
Sub WithExample()
With Sheets("Лист1").Range("A1")
.Value = "Заголовок"
.Font.Bold = True
.Font.Size = 14
.Interior.Color = RGB(200, 200, 255)
End With
End Sub


🛠 Как работает With?
🔹 VBA запоминает объект внутри With и применяет все действия внутри блока к этому объекту.
🔹 Все строки, начинающиеся с . (точки), относятся к объекту внутри With.
🔹 Не забывайте закрывать блок With ... End With, чтобы код работал правильно.

💡 Используйте With, если вам нужно изменить несколько свойств одного объекта – это делает код компактнее, быстрее и удобнее! 🚀

#VBA #ExcelVBA #With #Оптимизация
🔥5👍1