Найти тему
VBA Excel с нуля

VBA Excel № 53. For Next в VBA.

Скриншот с моего ноутбука
Скриншот с моего ноутбука

В программировании, коллекция - это какая-то группа схожих вещей. Например, представьте, что у вас есть много рабочих книг, и вы хотите сделать что-то со всеми ими. В этом случае, "Workbooks" - это ваша коллекция рабочих книг.

Чтобы работать с объектами в такой коллекции, вы можете использовать цикл "For Each/Next". Он позволяет вам выполнять действия для каждого объекта в коллекции или оценивать их и выполнять действия, если выполнены определенные условия.

Пример:

Sub ПеречислитьЛисты()

Dim Лист As Worksheet

For Each Лист In ActiveWorkbook.Sheets

MsgBox Лист.Name

Next Лист

End Sub

Скриншот с моего ноутбука
Скриншот с моего ноутбука

В этом примере мы перебираем все листы в текущей рабочей книге и отображаем их названия.

Вы можете использовать разные имена переменных вместо "Лист" для удобства.

Другой пример:

Sub СчитатьСкрытыеОкна()

Dim Счетчик As Integer

Dim Окно As Window

Счетчик = 0

For Each Окно In Windows

If Not Окно.Visible Then

Счетчик = Счетчик + 1

End If

Next Окно

MsgBox Счетчик & " скрытых окон."

End Sub

Скриншот с моего ноутбука
Скриншот с моего ноутбука

В этом примере мы считаем скрытые окна и отображаем количество всплывающих окон.

Цикл ниже также может использоваться для обработки ячеек в диапазоне. Например:

Sub ПреобразоватьВВерхнийРегистр()

Dim Ячейка As Range

For Each Ячейка In Selection

Ячейка.Value = UCase(Ячейка.Value)

Next Ячейка

End Sub

Скриншот с моего ноутбука
Скриншот с моего ноутбука

В этом примере мы перебираем ячейки в выделенной области и преобразуем их содержимое в верхний регистр.

И, наконец, в VBA есть способ выйти из цикла до его завершения с помощью "Exit For". Пример:

Sub ВыбратьПервоеОтрицательноеЗначение ()

Dim Ячейка As Range

For Each Ячейка In Range("1:1")

If Ячейка.Value < 0 Then

Ячейка.Select

Exit For

End If

Next Ячейка

End Sub

Скриншот с моего ноутбука
Скриншот с моего ноутбука

В этом примере мы выбираем первую отрицательную ячейку в первой строке документа.

Эти примеры должны помочь вам лучше понять, как работает конструкция "For Each/Next" в VBA.

В следующей статье рассмотрим конструкцию If Then в VBA.