Az Excel VBA programozásának legegyszerűbb típusa a For-Next ciklus. A hurkot egy számlálóváltozó vezérli, amely az egyik értéknél kezdődik és egy másik értéknél leáll. A For és a Next utasítás közötti állítások azok az állítások, amelyek ismétlődnek a ciklusban.
Egy For-Next példa
A következő példa a For-Next ciklust használja az első 1000 pozitív szám összegzésére. A Total változó nullával kezdődik. Ezután megtörténik a hurkoltság. A Cnt változó a hurokszámláló. 1-gyel kezdődik, és minden alkalommal 1-gyel növekszik a cikluson keresztül. A ciklus akkor ér véget, amikor Cnt 1000.
Ebben a példában csak egy utasítás van a cikluson belül. Ez az utasítás hozzáadja a Cnt értékét a Total változóhoz. Amikor a ciklus véget ér, egy MsgBox megjeleníti a számok összegét.
Sub Add Numbers()
Dim Total Duplaként
Dim Cnt As Long
Összesen = 0
Ha Cnt = 1–1000
Összesen = Összesen + Cnt
Következő Cnt
MsgBox összesen
Vége Sub
Mivel a hurokszámláló egy normál változó, kódot írhat az értékének megváltoztatásához a For és a Next utasítások közötti kódblokkon belül. Ez azonban nagyon rossz gyakorlat.
For-Next példák lépéssel
A Step érték segítségével kihagyhat néhány számlálóértéket a For-Next ciklusban. Íme az előző példa, átírva, hogy csak az 1 és 1000 közötti páratlan számokat összegezze:
Sub AddOddNumbers()
Dim Total Duplaként
Dim Cnt As Long
Összesen = 0
Ha Cnt = 1–1000 2. lépés
Összesen = Összesen + Cnt
Következő Cnt
MsgBox összesen
Vége Sub
Ezúttal a Cnt 1-ből indul, majd 3, 5, 7 és így tovább értékeket vesz fel. A Step érték határozza meg a számláló növelésének módját. Figyelje meg, hogy a felső hurokértéket (1000) valójában nem használja, mert a Cnt legmagasabb értéke 999 lesz.
Íme egy másik példa, amely 3-as lépésértéket használ. Ez az eljárás az aktív lappal működik, és világosszürke árnyalatot alkalmaz minden harmadik sorban, az 1. sortól a 100. sorig.
Sub ShadeEveryThirdRow()
Dim i As Long
Ha i = 1–100, 3. lépés
Sorok(i).Belső.Szín = RGB(200, 200, 200)
Következő i
Vége Sub
Tekintse meg a makró futtatásának eredményét.

Hurok segítségével háttérárnyékolást alkalmazunk a sorokra.
Egy For-Next példa egy Exit For utasítással
A For-Next ciklus egy vagy több Exit For utasítást is tartalmazhat a cikluson belül. Amikor a VBA találkozik ezzel az utasítással, a ciklus azonnal véget ér.
A következő példa az Exit For utasítást mutatja be. Ez a rutin egy függvényeljárás, amelyet munkalapképletekben való használatra terveztek. A függvény elfogad egy argumentumot (az Str nevű változót), és visszaadja az első számjegytől balra lévő karaktereket. Ha például az argumentum „KBR98Z”, a függvény a „KBR” értéket adja vissza.
Függvény szövegrész (Str)
Dim i As Long
TextPart = ""
Ha i = 1 Len(Str)
Ha IsNumeric(Mid(Str, i, 1)) Akkor
Kilépés ehhez
Más
Szövegrész = Szövegrész és közép (Str, i, 1)
Vége Ha
Következő i
Funkció befejezése
A For-Next ciklus 1-gyel kezdődik, és a karakterláncban lévő karakterek számát jelző számmal végződik. A kód a VBA Mid funkcióját használja egyetlen karakter kinyerésére a cikluson belül. Ha numerikus karaktert talál, az Exit For utasítás végrehajtásra kerül, és a ciklus idő előtt véget ér.
Ha a karakter nem numerikus, a rendszer hozzáfűzi a visszaadott értékhez (amely megegyezik a függvény nevével). A ciklus csak akkor vizsgál meg minden karaktert, ha az argumentumként átadott karakterlánc nem tartalmaz numerikus karaktereket.
Egy beágyazott For-Next példa
A ciklusban tetszőleges számú utasítás szerepelhet, és a For-Next ciklusokat más For-Next ciklusokba ágyazhatja be.
A következő példa egy beágyazott For-Next ciklust használ véletlen számok beszúrására egy 12 sorból 5 oszlopból álló cellatartományba. Figyeljük meg, hogy a rutin a belső hurkot (a sorszámlálóval ellátott hurkot) egyszer hajtja végre a külső ciklus (a Col számlálóval rendelkező hurok ) minden egyes iterációjához . Más szavakkal, a rutin 60-szor hajtja végre a Cells(Row, Col) = Rnd utasítást.

Ezeket a cellákat egy beágyazott For-Next hurok használatával töltöttük ki.
Sub FillRange()
Dim Col As Long
Dim Row As Long
Col = 1-től 5-ig
Sor esetén = 1–12
Cellák (sor, oszlop) = Rnd
Következő sor
Következő ezr
Vége Sub
A következő példa beágyazott For-Next ciklusokat használ egy háromdimenziós tömb inicializálására 100 értékkel. Ez a rutin az összes ciklus közepén végrehajtja az utasítást (a hozzárendelési utasítást) 1000 alkalommal (10 * 10 * 10), minden alkalommal i, j és k értékeinek eltérő kombinációjával:
Sub NestedLoops()
Dim MyArray (10, 10, 10)
Dim i As Long
Dim j As Long
Dim k As Long
Ha i = 1-től 10-ig
Ha j = 1–10
Ha k = 1–10
Saját tömb(i, j, k) = 100
Következő k
Következő j
Következő i
"A többi kijelentés ide tartozik
Vége Sub
Íme egy utolsó példa, amely beágyazott For-Next ciklusokat használ Step értékkel. Ez az eljárás a váltakozó cellák háttérszínének megváltoztatásával sakktáblát hoz létre.

Hurkok használata sakktábla-minta létrehozásához.
A sorszámláló 1 és 8 között mozog. Az If-Then konstrukció határozza meg, hogy melyik beágyazott For-Next struktúrát kell használni. Páratlan sorok esetén a Col számláló 2-vel kezdődik. A páros sorok esetén a Col számláló 1-gyel kezdődik. Mindkét ciklus 2-es Step értéket használ, így az alternatív cellákat érinti. Két további utasítás négyzet alakúvá teszi a cellákat (mint egy igazi sakktábla).
Sub MakeCheckerboard()
Dim R As Long, C As Long
Ha R = 1–8
Ha WorksheetFunction.IsOdd(R) Akkor
C = 2–8 esetén 2. lépés
Cellák (R, C).Belső.Szín = 255
Következő C
Más
C = 1-től 8-ig 2. lépés
Cellák (R, C).Belső.Szín = 255
Következő C
Vége Ha
Következő R
Sorok („1:8”). Sormagasság = 35
Oszlopok ("A:H"). Oszlopszélesség = 6,5
Vége Sub