В программировании, коллекция - это какая-то группа схожих вещей. Например, представьте, что у вас есть много рабочих книг, и вы хотите сделать что-то со всеми ими. В этом случае, "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.