Урок 11 по VBA — Цикл do loop

Урок 11 по VBA — Цикл do loop Макросы на VBA

И так, мы уже познакомились с циклами for next и for each next, а в этой статье рассмотрим цикл do loop vba языка. Данный цикл vba в отличии от двух предыдущих работает не по принципу перебора, а по принципу условия, то есть… Вы задаете условие выхода или выполнения цикла, а не количество итераций. Фактически, цикл do loop это гибрид цикла for next с выражением exit for.

В зависимости от синтаксиса можно задавать условие как в начале, так и в конце…

Do while Loop VBA

Общий синтаксис:

Do While условие
Операторы
Loop

В данном случае поверка условия идет в начале, тут задается условие выполнения VBA цикла, если условие равно True, выполнение операторов продолжается. Если условие будет равно False, произойдет выполнение операторов, следующих после ключевого слова Loop. Так как проверка условия происходит до выполнения первого оператора в теле цикла, то может возникнуть ситуация, когда условие будет ложным изначально и ничего не выполнится.

Do Loop While

Общий синтаксис:

Do
Операторы
Loop While условие

Как видим, проверка условия выполнении происходит в конце, поэтому как минимум один раз произойдет выполнение оператора в теле цикла.

Do Until … Loop

Общий синтаксис:

Do Until условие

Операторы

Loop

В данном случае ключевое слово Until определяет, что происходит проверка условии не на выполнение (как в предыдущих вариантах), а на завершение VBA цикла. То есть, если условие равно TRUE, произойдет выход, иначе, продолжится выполнение операторов цикла VBA.

Do Loop Until

Общий синтаксис:

Do
Операторы
Loop Until условие

Тут происходит поверка условия выхода из цикла в конце.

Вполне возможна ситуация, когда нужно задать дополнительное условие выхода из оператора цикла VBA, для таких ситуаций служит выражение Exit Do, аналог Exit For.

Хорошо, теперь давайте напишем небольшой пример. В редакторе VBA создайте новую форму (меню Insert пункт UserForm), на ее поверхность добавьте четыре текстовые метки (класс Label) и одну кнопку (класс CommandButton). Теперь в редакторе кода для формы пропишите:

PrivateSub GetSumm()Dim summ AsInteger    DoWhile summ <= 1000        summ = summ + 1    Loop    Label1.Caption = summ & " - do while loop vba"     summ = 0    Do        summ = summ + 1    LoopWhile summ <= 1000    Label2.Caption = summ & " - do loop while vba"     summ = 0    DoUntil summ >= 1000        summ = summ + 1    Loop    Label3.Caption = summ & " - do until loop vba"     summ = 0    Do        summ = summ + 1    LoopUntil summ >= 1000    Label4.Caption = summ & " - do loop until vba" EndSubPrivateSub CommandButton1_Click()    'Вызываем процедуру    Call GetSummEndSub PrivateSub UserForm_Initialize()    Label1.Caption = ""    Label1.FontSize = 15    Label1.ForeColor = vbBlue     Label2.Caption = ""    Label2.FontSize = 15    Label2.ForeColor = vbGreen     Label3.Caption = ""    Label3.FontSize = 15    Label3.ForeColor = vbRed     Label4.Caption = ""    Label4.FontSize = 15    Label4.ForeColor = vbYellow     CommandButton1.Caption = "Сумма"EndSub
do while loop vba

Процедура GetSumm отвечает за выполнение операторов цикла VBA, в которых происходит процесс суммирования чисел. Как видим, мы не задаем начального значения, а просто прибавляем число 1. Первые два цикла задают условие выполнения – значение переменной summ должно быть меньше или ровно 1000. Во вторых двух циклах мы задали условие выхода – значение переменной sum должно быть больше или равно 1000. Как видим, в первых двух случаях нам вывело число 1001, а во вторых – 1000. Фактически, при использовании ключевого слова while, количество выполнений оператора в блоке цикла было на один раз больше, чем при использовании ключевого слова Until.

И так, в этой статье мы рассмотрели использование цикла do while loop vba и do until loop vba, который может использоваться на ряду с циклами for next и for each. Однако, тут можно задавать или условие выполнения или условие завершения работы цикла. Также, для выхода из блока применяется выражение exit for. Цикл VBA do loop часто используется для создания зацикливания, например – прослушивание системы на запуск заданной программы.

Для общего развития, можете посмотреть примеры использования цикла Do Loop в языке VBScript сервера сценариев Windows Script Host, который, как уже упоминалось, является сородичем языка Visual Basic for Applications.

Оцените статью
Технологии программирования и ведение блога
Добавить комментарий