Öèêëû VBA (÷.1). Êîìàíäû îðãàíèçàöèè öèêëîâ
Êàêèå ëèáî äåéñòâèÿ ïðîöåäóðû ïîâòîðÿþùèåñÿ çàäàííîå êîëè÷åñòâî ðàç èëè ïîêà âûïîëíÿåòñÿ èëè íå âûïîëíÿåòñÿ íåêîòîðîå óñëîâèå íàçûâàþò öèêëîì.
Ïðîöåññ âûïîëíåíèÿ âñå îïåðàòîðîâ, çàêëþ÷åííûõ â ñòðóêòóðó öèêëà, îäèí ðàç íàçûâàåòñÿ èòåðàöèåé öèêëà.
Ñòðóêòóðû öèêëà, âñåãäà âûïîëíÿþùèåñÿ çàäàííîå êîëè÷åñòâî ðàç, íàçûâàþòñÿ öèêëàìè ñ ôèêñèðîâàííûì ÷èñëîì èòåðàöèé. Äðóãèå òèïû ñòðóêòóð öèêëà ïîâòîðÿþòñÿ ïåðåìåííîå êîëè÷åñòâî ðàç â çàâèñèìîñòè îò íåêîòîðîãî íàáîðà óñëîâèé. Òàêèå öèêëû íàçûâàþòñÿ íåîïðåäåëåííûìè öèêëàìè.
Áëîê îïåðàòîðîâ, íàõîäÿùèéñÿ ìåæäó íà÷àëîì è êîíöîì öèêëà íàçûâàåòñÿ "òåëî öèêëà".
Ñàìîé ïðîñòîé ñòðóêòóðîé öèêëà ÿâëÿåòñÿ ôèêñèðîâàííûé öèêë.
Öèêë For..Next
Ñèíòàêñèñ
For counter = Start To End [Step StepSize]
Statements
Next [counter]
Counter - ëþáàÿ ÷èñëåííàÿ ïåðåìåííàÿ VBA
Start - ëþáîå ÷èñëåííîå âûðàæåíèå , îïðåäåëÿåò íà÷àëüíîå çíà÷åíèå äëÿ ïåðåìåííîé counter
End - ÷èñëåííîå âûðàæåíèå, îïðåäåëÿåò êîíå÷íîå çíà÷åíèå äëÿ ïåðåìåííîé counter
Statements - îäèí, íåñêîëüêî èëè íè îäíîãî îïåðàòîðà VBA (òåëî öèêëà).
Ïî óìîë÷àíèþ VBA óâåëè÷èâàåò ïåðåìåííóþ counter íà 1 êàæäûé ðàç ïðè âûïîëíåíèè îïåðàòîðîâ â öèêëå. Ìîæíî çàäàòü äðóãîå çíà÷åíèå (SterSize - ëþáîå ÷èñëåííîå âûðàæåíèå), íà êîòîðîå áóäåò èçìåíÿòüñÿ counter.
Êëþ÷åâîå ñëîâî Next ñîîáùàåò VBA î òîì, ÷òî äîñòèãíóò êîíåö öèêëà. Íåîáÿçàòåëüíàÿ ïåðåìåííàÿ counter ïîñëå êëþ÷åâîãî ñëîâà Next äîëæíà áûòü òîé æå ñàìîé ïåðåìåííîé counter, êîòîðàÿ áûëà çàäàíà ïîñëå êëþ÷åâîãî ñëîâà For â íà÷àëå ñòðóêòóðû öèêëà.
Íèæå ïðåäñòàâëåí ëèñòèíã ïðîñòåéøåãî öèêëà For..Next, êîòîðûé ñ÷èòàåò ñóììó öèôð îò 1 äî 10:

À òåïåðü äâà âàðèàíòà öèêëà For..Next ñ èñïîëüçîâàíèåì øàãà öèêëà îòëè÷íîãî îò åäèíèöû:

Îáðàòèòå âíèìàíèå! Ïðè óìåíüøåíèè ñ÷åò÷èêà öèêëà For..Next öèêë âûïîëíÿåòñÿ, ïîêà ïåðåìåííàÿ ñ÷åò÷èêà áîëüøå èëè ðàâíà êîíå÷íîìó çíà÷åíèþ, à êîãäà ñ÷åò÷èê öèêëà óâåëè÷èâàåòñÿ, öèêë âûïîëíÿåòñÿ, ïîêà ïåðåìåííàÿ ñ÷åò÷èêà ìåíüøå èëè ðàâíà êîíå÷íîìó çíà÷åíèþ.
Öèêë For Each..Next
Öèêë For Each..Next íå èñïîëüçóåò ñ÷åò÷èê öèëêà. Öèêëû For Each..Next âûïîëíÿþòñÿ ñòîëüêî ðàç, ñêîëüêî èìååòñÿ ýëåìåíòîâ â îïðåäåëåííîé ãðóïïå, òàêîé êàê êîëëåêöèÿ îáúåêòîâ èëè ìàññèâ (êîòîðûå áóäóò ðàññìàòðèâàòüñÿ ïîçæå). Ïðîùå ãîâîðÿ, öèêë For Each..Next âûïîëíÿåòñÿ îäèí ðàç äëÿ êàæäîãî ýëåìåíòà â ãðóïïå.
Ñèíòàêñèñ
For Each Element In Group
Statements
Next [Element]
Element - ïåðåìåííàÿ, èñïîëüçóåìàÿ äëÿ èòåðàöèè ïî âñåì ýëåìåíòàì â îïðåäåëåííîé ãðóïïå
Group - ýòî îáúåêò êîëëåêöèè èëè ìàññèâ
Statements - îäèí, íåñêîëüêî èëè íè îäíîãî îïåðàòîðà VBA (òåëî öèêëà).
Öèêë For Each..Next âñåãäà âûïîëíÿåòñÿ ñòîëüêî ðàç, ñêîëüêî èìååòñÿ ýëåìåíòîâ â îïðåäåëåííîé ãðóïïå.
 íèæåïðèâåäåííîì ëèñòèíãå ïîêàçàíà ôóíêöèÿ SheetExists, èñïîëüçóþùàÿ öèêë For Each..Next äëÿ îïðåäåëåíèÿ òîãî, ñóùåñòâóåò ëè îïðåäåëåííûé ëèñò â ðàáî÷åé êíèãå Excel:
