Îïåðàòîðû âåòâëåíèÿ VBA: ïðîñòîé âûáîð
Äî ñèõ ïîð ðàññìàòðèâàëèñü ïðîöåäóðû è ôóíêöèè, êîòîðûå VBA âûïîëíÿåò â ëèíåéíîì ïîðÿäêå - VBA íà÷èíàåò âûïîëíåíèå êîäà ñ ïåðâîãî îïåðàòîðà ïîñëå ñòðîêè îáúÿâëåíèÿ ïðîöåäóðû (ôóíêöèè) è ïðîäîëæàåò âûïîëíÿòü êàæäûé îïåðàòîð ïîñòðî÷íî äî òåõ ïîð, ïîêà íå áóäåò äîñòèãíóò îïåðàòîð End Sub (End Function). Òàêîé ëèíåéíûé àëãîðèòì ìîæíî ïðåäñòàâèòü íèæåñëåäóþùåé áëîê-ñõåìîé:

Îäíàêî äîâîëüíî ÷àñòî âñòðå÷àþòñÿ ñèòóàöèè, êîãäà íåîáõîäèìî, ÷òîáû ïðîöåäóðû èëè ôóíêöèè âûïîëíÿëè ðàçëè÷íûå äåéñòâèÿ ïðè ðàçíûõ óñëîâèÿõ. Òàêóþ ñèòóàöèþ èëëþñòðèðóþò ñëåäóþùèå áëîê-ñõåìû:


Îïåðàòîðû, âûïîëíÿþùèå ðîëü âåòâëåíèÿ ïðîãðàììû íà îñíîâàíèè êàêîãî-ëèáî óñëîâèÿ, íàçûâàþòñÿ îïåðàòîðàìè óñëîâíîãî ïåðåõîäà.
Ïðîñòåéøèìè îïåðàòîðàìè óñëîâíîãî ïåðåõîäà ÿâëÿþòñÿ îïåðàòîðû If..Then; If..Then..Else. Ïåðâûé îïåðàòîð ïîçâîëÿåò âûáèðàòü åäèíñòâåííóþ âåòâü ïðîöåäóðû (ëåâàÿ áëîê-ñõåìà), òîãäà êàê âòîðîé äàåò âîçìîæíîñòü âûáèðàòü èç äâóõ àëüòåðíàòèâíûõ âåòâåé êîäà ïðîöåäóðû (ïðàâàÿ áëîê-ñõåìà) íà îñíîâå îöåíêè òîãî, ÿâëÿåòñÿ ëè óñëîâèå ðàâíûì True èëè False.
Ñèíòàêñèñ If..Then
Âàðèàíò 1:
If Condition Then Statements
Âàðèàíò 2:
If Condition Then
Statements
End If
Condition - ëîãè÷åñêîå âûðàæåíèå;
Statements - îäèí, íåñêîëüêî èëè íè îäíîãî îïåðàòîðà VBA.
Ïåðâûé âàðèàíò òðåáóåò íàïèñàíèÿ îïåðàòîðà â îäíó ñòðîêó, ïðè ýòîì â ñåêöèè Statements ìîæíî óêàçûâàòü íåñêîëüêî îïåðàòîðîâ, ðàçäåëÿÿ èõ äâîåòî÷èåì.
Âòîðîé âàðèàíò ïîçâîëÿåò óêàçûâàòü íåñêîëüêî îïåðàòîðîâ â ðàçíûõ ñòðîêàõ.
Ëîãèêà ðàáîòû ñëåäóþùàÿ: VBA ñíà÷àëà îöåíèâàåò ëîãè÷åñêîå âûðàæåíèå, ïðåäñòàâëåííîå â ñåêöèè Condition; åñëè ýòî ëîãè÷åñêîå âûðàæåíèå ðàâíî True òî âûïîëíÿåòñÿ îïåðàòîð (îïåðàòîðû) ñåêöèè Statements; çàòåì VBA ïðîäîëæàåò âûïîëíåíèå êîäà ñëåäóþùåãî çà ñòðîêîé If..Then (Âàðèàíò 1) èëè çà êëþ÷åâûìè ñëîâàìè End If (Âàðèàíò 2). Åñëè æå ëîãè÷åñêîå âûðàæåíèå ðàâíî False, òî îïåðàòîðû ñåêöèè Statements ïðîïóñêàþòñÿ è âûïîëíÿåòñÿ êîä, ñëåäóþùèé çà ýòîé ñåêöèåé.
Íèæå ïðèâåäåí ëèñòèíã ýëåìåíòàðíîãî èñïîëüçîâàíèÿ ïåðâîãî âàðèàíòà íàïèñàíèÿ If..Then:


À òåïåðü - âòîðîé âàðèàíò:

Îáðàòèòå âíèìàíèå, ÷òî îïåðàòîðû ñåêöèè Statements íàïèñàíû ñ èñïîëüçîâàíèåì îòñòóïà (èñïîëüçóåòñÿ òàáóëÿöèÿ). Ýòî âàæíûé ìîìåíò. Ñëåäóåò ñðàçó ïðèó÷àòü ñåáÿ ê ïîäîáíîìó îôîðìëåíèþ ïðîãðàììíîãî êîäà - ýòî ïîâûøàåò åãî óäîáî÷èòàåìîñòü è çíà÷èòåëüíî îáëåã÷àåò ïîèñê îøèáîê.
Ñèíòàêñèñ If..Then..Else
Âàðèàíò 1:
If Condition Then Statements Else ElseStatements
Âàðèàíò 2:
If Condition Then
Statements
Else
ElseStatements
End If
Condition - ëîãè÷åñêîå âûðàæåíèå;
Statements, ElseStatements - îäèí, íåñêîëüêî èëè íè îäíîãî îïåðàòîðà VBA.
Ïî àíàëîãèè ñ If..Then - ïåðâûé âàðèàíò òðåáóåò íàïèñàíèÿ îïåðàòîðà â îäíó ñòðîêó, ïðè ýòîì â ñåêöèÿõ Statements è ElseStatements ìîæíî óêàçûâàòü íåñêîëüêî îïåðàòîðîâ, ðàçäåëÿÿ èõ äâîåòî÷èåì.
Âòîðîé âàðèàíò ïîçâîëÿåò óêàçûâàòü íåñêîëüêî îïåðàòîðîâ â ðàçíûõ ñòðîêàõ.
Ëîãèêà ðàáîòû ñëåäóþùàÿ: VBA ñíà÷àëà îöåíèâàåò ëîãè÷åñêîå âûðàæåíèå, ïðåäñòàâëåííîå â ñåêöèè Condition; åñëè ýòî ëîãè÷åñêîå âûðàæåíèå ðàâíî True òî âûïîëíÿåòñÿ îïåðàòîð (îïåðàòîðû) ñåêöèè Statements; çàòåì VBA ïðîäîëæàåò âûïîëíåíèå êîäà ñëåäóþùåãî çà ñòðîêîé If..Then (Âàðèàíò 1) èëè çà êëþ÷åâûìè ñëîâàìè End If (Âàðèàíò 2). Åñëè æå ëîãè÷åñêîå âûðàæåíèå ðàâíî False, òî âûïîëíÿþòñÿ îïåðàòîðû ñåêöèè ElseStatements.
Ñëåäóåò ñêàçàòü, ÷òî áëîê îïåðàòîðîâ If..Then..Else (Âàðèàíò 2) ëåã÷å ÷èòàòü è ïîíèìàòü. Ïîýòîìó, ñîâåòóþ èñïîëüçîâàòü èìåííî ýòîò âàðèàíò, äàæå åñëè â ñåêöèÿõ Statements è ElseStatements áóäåò íàõîäèòüñÿ ïî îäíîìó îïåðàòîðó.
