
Еще одна ситуация когда мы не знаем точно, сколько раз должна быть выполнена та или другая команда это зависит от какого-либо условия. Используются конструкции Do While Loop и Do Until Loop.
Но для многих других коллекций без конструкции For Each не обойтись.
Set oMyWorkBook = Workbooks("Сводка.xls")
В этом случае мы проходим циклом по всем элементам коллекции Workbooks (то есть открытым рабочим книгам в Excel), для каждой книги проверяем ее имя, и если мы нашли книгу с именем Сводка.xls, то мы получаем на нее ссылку и выходим из цикла. Коллекция рабочих книг это специальная коллекция, которая умеет производить поиск в себе по имени элементов, поэтому в принципе можно было обойтись такой строкой:
If oWbk.Name = "Сводка.xls" Then
При использовании этого приема можно очень просто найти и получить ссылку на нужный нам объект:
Очень часто в VBA требуется сделать какое-нибудь действие со всеми элементам коллекции или массива перебрать все открытые документы, все листы Excel, все ячейки в определенном диапазоне и т.п. Для того, чтобы пройти циклом по всем элементам коллекции, используется команда For Each Next:
If iCounter =VInput Then Exit For
MsgBox "Счетчик: " & iCounter
VStop = InputBox ( Введите значение останова )
Для безусловного выхода из конструкции For Next используется команда Exit For.
MsgBox "Счетчик: " & iCounter
For iCounter = 10 to 1 Step -2
Можно и уменьшать исходное значение счетчика:
MsgBox "Счетчик: " & iCounter
Чтобы указать, насколько должно прирастать значение счетчика, используется ключевое слово Step:
MsgBox "Счетчик: " & iCounter
Циклы используются в ситуациях, когда нам нужно выполнить какое-либо действие несколько раз. Первая ситуация мы знаем, сколько раз нужно выполнить какое-либо действие, в этом случае используется конструкция For Next:
Циклы VBA, конструкция For...Next, конструкция For Each...Next, выход из цикла по Exit For, конструкции Do While и Do Until, выход из цикла по Exit Do, конструкция While...Wend
3.6 Работа с циклами
Комментариев нет:
Отправить комментарий