Öèêëû VBA (÷.2). Öèêëû òåñòèðóþùèå óñëîâèÿ äî è ïîñëå âûïîëíåíèÿ òåëà öèêëà
Ñóùåñòâóþò äâà îñíîâíûõ ñïîñîáà ñîçäàíèÿ íåîïðåäåëåííîãî öèêëà. Ìîæíî ïîñòðîèòü öèêë òàê, ÷òî VBA áóäåò òåñòèðîâàòü íåêîòîðîå óñëîâèå (äåòåðìèíàíò öèêëà) ëèáî ïåðåä âûïîëíåíèåì öèêëà, ëèáî - ïîñëå âûïîëíåíèÿ öèêëà.
Öèêë Do .. While
Êîíñòðóêöèÿ öèêëà, òåñòèðóþùàÿ ñâîå óñëîâèå äåòåðìèíàíòà äî âûïîëíåíèÿ öèêëà.
Ñèíòàêñèñ:
Do While Condition
Statements
Loop
Condition - ëîãè÷åñêîå âûðàæåíèå äëÿ äåòåðìèíàíòà öèêëà
Statements - îäèí, íè îäíîãî èëè íåñêîëüêî îïåðàòîðîâ, êîòîðûå ñîñòàâëÿþò òåëî öèêëà
Loop - êëþ÷åâîå ñëîâî, óêàçûâàåò íà îêîí÷àíèå òåëà öèêëà è îáîçíà÷àåò ìåñòî, èç êîòîðîãî VBA âîçâðàùàåòñÿ â íà÷àëî öèêëà äëÿ ïðîâåðêè óñëîâèÿ
VBA âûïîëíÿåò öèêë ïîêà ëîãè÷åñêîå âûðàæåíèå, ïðåäñòàâëåííîå ñ ïîìîùüþ Condition, ðàâíî True.
Ïðè âûïîëíåíèè öèêëà Do While ñíà÷àëà òåñòèðóåòñÿ ëîãè÷åñêîå âûðàæåíèå (Condition); åñëè îíî ðàâíî True - âûïîëíÿåòñÿ òåëî öèêëà. Ïðè äîñòèæåíèè êëþ÷åâîãî ñëîâà Loop óïðàâëåíèå îïÿòü ïåðåäàåòñÿ â íà÷àëî öèêëà è ñíîâà ïðîâåðÿåòñÿ ëîãè÷åñêîå âûðàæåíèå. Òàê ïðîèñõîäèò äî òåõ ïîð, ïîêà ëîãè÷åñêîå âûðàæåíèå íå ñòàíåò False. Êîãäà ëîãè÷åñêîå âûðàæåíèå ñòàíîâèòñÿ False - óïðàâëåíèå ïåðåäàåòñÿ îïåðàòîðó, ñëåäóþùåìó çà êëþ÷åâûì ñëîâîì Loop.
Îáðàòèòå âíèìàíèå! Åñëè ëîãè÷åñêîå âûðàæåíèå ðàâíî False ïðè ïåðâîì âûïîëíåíèè öèêëà Do While, òî óïðàâëåíèå ñðàçó ïåðåäàåòñÿ îïåðàòîðó, ñëåäóþùåìó çà Loop, à îïåðàòîðû, íàõîäÿùèåñÿ â òåëå öèêëà ñîîòâåòñòâåííî ïðîïóñêàþòñÿ. Äðóãèìè ñëîâàìè ãîâîðÿ, öèêë Do While ïîçâîëÿåò íè ðàçó íå âûïîëíÿòü îïåðàòîðû âíóòðè íåãî.
 íèæåïðèâåäåííîì ëèñòèíãå ïðåäñòàâëåí ýëåìåíòàðíûé öèêë Do While, ïîäñ÷èòûâàþùèé ñóììó öèôð îò 1 äî 10:

Öèêë Do .. Until
Åùå îäèí öèêë, òåñòèðóþùèé óñëîâèå äåòåðìèíàíòà äî âûïîëíåíèÿ öèêëà.
Ñèíòàêñèñ:
Do Until Condition
Statements
Loop
Condition - ëîãè÷åñêîå âûðàæåíèå äëÿ äåòåðìèíàíòà öèêëà
Statements - îäèí, íè îäíîãî èëè íåñêîëüêî îïåðàòîðîâ, êîòîðûå ñîñòàâëÿþò òåëî öèêëà
Loop - êëþ÷åâîå ñëîâî, óêàçûâàåò íà îêîí÷àíèå òåëà öèêëà è îáîçíà÷àåò ìåñòî, èç êîòîðîãî VBA âîçâðàùàåòñÿ â íà÷àëî öèêëà äëÿ ïðîâåðêè óñëîâèÿ
VBA âûïîëíÿåò öèêë ïîêà ëîãè÷åñêîå âûðàæåíèå, ïðåäñòàâëåííîå ñ ïîìîùüþ Condition, ðàâíî False.
 îñòàëüíîì öèêë Do Until ïîëíîñòüþ àíàëîãè÷åí öèêëó Do While.
Ëèñòèíã, èñïîëüçóþùèé öèêë Do Until äëÿ ïîäñ÷åòà öèôð îò 1 äî 10, áóäåò âûãëÿäåòü òàê:

Äëÿ òåñòèðîâàíèÿ óñëîâèé ïîñëå âûïîëíåíèÿ òåëà öèêëà íàäî ïîìåñòèòü ëîãè÷åñêîå âûðàæåíèå â êîíåö áëîêà îïåðàòîðîâ, ñîñòàâëÿþùèõ òåëî öèêëà, ïîñëå êëþ÷åâîãî ñëîâà Loop, êîòîðîå ñîîáùàåò î êîíöå öèêëà.
Öèêë Do .. Loop While
Êîíñòðóêöèÿ öèêëà, òåñòèðóþùàÿ ñâîå óñëîâèå äåòåðìèíàíòà ïîñëå âûïîëíåíèÿ öèêëà.
Ñèíòàêñèñ:
Do
Statements
Loop While Condition
Condition - ëîãè÷åñêîå âûðàæåíèå äëÿ äåòåðìèíàíòà öèêëà
Statements - îäèí, íè îäíîãî èëè íåñêîëüêî îïåðàòîðîâ, êîòîðûå ñîñòàâëÿþò òåëî öèêëà
Loop - êëþ÷åâîå ñëîâî, óêàçûâàåò íà îêîí÷àíèå òåëà öèêëà è îáîçíà÷àåò ìåñòî, èç êîòîðîãî VBA âîçâðàùàåòñÿ â íà÷àëî öèêëà ïîñëå ïðîâåðêè óñëîâèÿ
VBA âûïîëíÿåò öèêë ïîêà ëîãè÷åñêîå âûðàæåíèå, ïðåäñòàâëåííîå ñ ïîìîùüþ Condition, ðàâíî True.
Ïðè âûïîëíåíèè öèêëà Do Loop While ñíà÷àëà âûïîëíÿþòñÿ îïåðàòîðû òåëà öèêëà, çàòåì ïî äîñòèæåíèè êëþ÷åâîãî ñëîâà Loop òåñòèðóåòñÿ ëîãè÷åñêîå âûðàæåíèå (Condition); åñëè îíî ðàâíî True - óïðàâëåíèå ïåðåäàåòñÿ â íà÷àëî òåëà öèêëà è öèêë ïîâòîðÿåòñÿ ñíîâà. Òàê ïðîèñõîäèò äî òåõ ïîð, ïîêà ëîãè÷åñêîå âûðàæåíèå íå ñòàíåò False. Êîãäà ëîãè÷åñêîå âûðàæåíèå ñòàíîâèòñÿ False - óïðàâëåíèå ïåðåäàåòñÿ îïåðàòîðó, ñëåäóþùåìó çà ñòðîêîé Loop While...
Îáðàòèòå âíèìàíèå! Äàæå åñëè ïðè ïåðâîì âûïîëíåíèè öèêëà Do Loop While ëîãè÷åñêîå âûðàæåíèå ðàâíî False òåëî öèêëà âñ¸ ðàâíî áóäåò âûïîëíåíî. Äðóãèìè ñëîâàìè ãîâîðÿ, íåçàâèñèìî îò çíà÷åíèÿ ëîãè÷åñêîãî âûðàæåíèÿ, ïðåäñòàâëåííîãî ñ ïîìîùüþ Condition, ýòîò öèêë âñåãäà âûïîëíÿåòñÿ, ïî êðàéíåé ìåðå, îäèí ðàç.
Ëèñòèíã, èñïîëüçóþùèé öèêë Do Loop While äëÿ ïîäñ÷åòà öèôð îò 1 äî 10, áóäåò âûãëÿäåòü òàê:

Öèêë Do .. Loop Until
Åùå îäèí öèêë, òåñòèðóþùèé óñëîâèå äåòåðìèíàíòà ïîñëå âûïîëíåíèÿ öèêëà.
Ñèíòàêñèñ:
Do
Statements
Loop Until Condition
Condition - ëîãè÷åñêîå âûðàæåíèå äëÿ äåòåðìèíàíòà öèêëà
Statements - îäèí, íè îäíîãî èëè íåñêîëüêî îïåðàòîðîâ, êîòîðûå ñîñòàâëÿþò òåëî öèêëà
Loop - êëþ÷åâîå ñëîâî, óêàçûâàåò íà îêîí÷àíèå òåëà öèêëà è îáîçíà÷àåò ìåñòî, èç êîòîðîãî VBA âîçâðàùàåòñÿ â íà÷àëî öèêëà ïîñëå ïðîâåðêè óñëîâèÿ
VBA âûïîëíÿåò öèêë ïîêà ëîãè÷åñêîå âûðàæåíèå, ïðåäñòàâëåííîå ñ ïîìîùüþ Condition, ðàâíî False.
 îñòàëüíîì öèêë Do Loop Until ïîëíîñòüþ àíàëîãè÷åí öèêëó Do Loop While.
Ëèñòèíã, èñïîëüçóþùèé öèêë Do Loop Until äëÿ ïîäñ÷åòà öèôð îò 1 äî 10, áóäåò âûãëÿäåòü òàê:

Ñëåäóåò ñêàçàòü, ÷òî ïðåäñòàâëåííûå âûøå ïðèìåðû äàíû ÷èñòî â ïîçíàâàòåëüíûõ öåëÿõ, ÷òîáû ìîæíî áûëî ïîíÿòü ñàìó ñóòü îðãàíèçàöèè íåîïðåäåëåííûõ öèêëîâ ñ ïðîâåðêîé óñëîâèé äî è ïîñëå âûïîëíåíèÿ òåëà öèêëà. Ñàìà æå ãèáêîñòü íåîïðåäåëåííûõ öèêëîâ çäåñü ÿâíî íå ïðîñìàòðèâàåòñÿ.