Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Posobie_Serkova_redKorovkina.doc
Скачиваний:
49
Добавлен:
02.03.2016
Размер:
4.21 Mб
Скачать

6.1. Циклы с условием (неопределённые циклы)

Циклы с условием используются в тех случаях, когда повторяющиеся действия нужно выполнять только при определённых условиях. Количество итераций не определено и в общем случае может быть равно нулю (в частности, для циклов с предусловием).

VBA предлагает разработчикам несколько управляющих структур для организации циклов с условием:

  • Четыре вида циклов Do…Loop, которые различаются типом проверяемого условия и временем выполнения этой проверки.

  • Непрерываемый цикл While … Wend.

В тех случаях, когда нет возможности указать начальное и конечное значения переменной цикла, используют циклы типа Do-Loop. Для таких циклов возможны 4 варианта записи.

Цикл Do While Loop – типичный цикл с предусловием. Условие проверяется до того, как выполняется тело цикла. Цикл продолжает свою работу, пока это <условие> выполняется (т. е. имеет значение True). Так как проверка выполняется в начале, то тело цикла может ни разу не выполниться. Формат цикла Do While … Loop:

Do While <условие>

<блок операторов>

Loop.

Оператор Do … Loop While предназначен для организации цикла с постусловием. Условие проверяется после того, как тело цикла будет выполнено хотя бы один раз. Цикл продолжает свою работу, пока <условие> остаётся истинным.

Формат цикла Do … Loop While:

Do

< блок операторов >

Loop While <условие>.

Циклы Do Until … Loop и Do Loop Until являются инверсиями ранее рассмотренных циклов с условием. В общем случае они работают аналогично, за исключением того, что тело цикла выполняется при ложном условии (т. е. <условие>=False).

Формат цикла Do Until … Loop:

Do Until <условие>

< блок операторов >

Loop.

Формат цикла Do … Loop Until:

Do

< блок операторов >

Loop Until <условие>.

Цикл While Wend также относится к циклам с условием. Данный оператор полностью соответствует структуре Do While … Loop. Формат цикла While … Wend:

While <условие>

< блок операторов >

Wend.

Отличительной особенностью этого оператора является невозможность принудительного завершения (прерывания) тела цикла (оператор Exit Do не работает в цикле While… Wend).

Прерывание цикла

Для досрочного завершения итерации и выхода из цикла применяется оператор Exit. Этот оператор применим в любой циклической структуре, кроме While ... Wend. Общий синтаксис использования Exit для прерывания цикла таков:

<начало_цикла>

[<блок операторов1>]

Exit (For | Do)

[<блок операторов2>]

[Exit (For | Do)]

...

<конец_цикла>.

При выполнении оператора Exit цикл прерывается, и управление передается оператору, следующему за оператором <конец_цикла>. В теле цикла может присутствовать несколько операторов Exit.

В число инструкций, исполняемых в цикле, может быть включена инструкция Exit Do, если из цикла надо выйти «досрочно», например, при выполнении какого-нибудь дополнительного условия. Заметим, что Do While означает Выполнять пока… Do Until означает Выполнять пока не … Другими словами, вместо Do Until можно написать Do While Not. В некоторых случаях эти проверки удобнее ставить в конец цикла (Loop – цикл, дословно – «петля»).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]