воскресенье, 10 февраля 2013 г.

окончить цикл в vba

Еще одна ситуация  когда мы не знаем точно, сколько раз должна быть выполнена та или другая команда  это зависит от какого-либо условия. Используются конструкции 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 Работа с циклами

Комментариев нет:

Отправить комментарий