Exceli VBA programmeerimise lihtsaim tsükli tüüp on For-Next tsükkel. Loopimist juhib loenduri muutuja, mis algab ühest väärtusest ja peatub teise väärtuse juures. Lause For ja Next vahelised väited on väited, mida korratakse tsüklis.
A For-Next näide
Järgmises näites kasutatakse tsüklit For-Next esimese 1000 positiivse arvu summeerimiseks. Muutuja Kokku algab nullist. Siis toimub loopimine. Muutuja Cnt on tsükliloendur. See algab 1-st ja seda suurendatakse tsükli kaudu iga kord 1 võrra. Silmus lõpeb, kui Cnt on 1000.
Selles näites on tsükli sees ainult üks lause. See väide lisab Cnt väärtuse muutujale Total. Kui tsükkel lõppeb, kuvab MsgBox numbrite summa.
Alam lisanumbrid()
Dim Total As Double
Dim Cnt As Long
Kokku = 0
Kui Cnt = 1 kuni 1000
Kokku = kokku + Cnt
Järgmine Cnt
MsgBox kokku
Lõpeta alam
Kuna tsükliloendur on tavaline muutuja, saate kirjutada koodi, et muuta selle väärtust lausete For ja Next vahel olevas koodiplokis. See on aga väga halb tava.
For-Next näited sammuga
Saate kasutada sammu väärtust mõne loenduri väärtuse vahelejätmiseks tsüklis For-Next. Siin on eelmine näide, mis on ümber kirjutatud, et summeerida ainult paaritud arvud vahemikus 1 kuni 1000:
Alam AddOddNumbers()
Dim Total As Double
Dim Cnt As Long
Kokku = 0
Kui Cnt = 1 kuni 1000, 2. samm
Kokku = kokku + Cnt
Järgmine Cnt
MsgBox kokku
Lõpeta alam
Seekord algab Cnt väärtusega 1 ja saab seejärel väärtused 3, 5, 7 jne. Sammu väärtus määrab, kuidas loendurit suurendatakse. Pange tähele, et ahela ülemist väärtust (1000) tegelikult ei kasutata, kuna Cnt suurim väärtus on 999.
Siin on veel üks näide, mis kasutab sammu väärtust 3. See protseduur töötab aktiivse lehega ja rakendab helehalli varjundit igale kolmandale reale 1. kuni 100. real.
Sub ShadeEveryThirdRow()
Dim i As Long
Kui i = 1 kuni 100, 3. samm
Rida(i).Sisemus.Värv = RGB(200, 200, 200)
Järgmine i
Lõpeta alam
Vaadake selle makro käitamise tulemust.

Silmuse kasutamine ridadele taustavarjutuse rakendamiseks.
For-Next näide koos Exit For lausega
For-Next tsükkel võib tsükli sees sisaldada ka üht või mitut Exit For lauset. Kui VBA selle avalduse kohtab, katkeb tsükkel kohe.
Järgmine näide demonstreerib lauset Exit For. See rutiin on funktsiooniprotseduur, mis on mõeldud kasutamiseks töölehe valemis. Funktsioon võtab vastu ühe argumendi (muutuja nimega Str) ja tagastab esimesest numbrilisest numbrist vasakul olevad märgid. Näiteks kui argument on "KBR98Z", tagastab funktsioon "KBR".
Funktsiooni tekstiosa (Str)
Dim i As Long
TextPart = ""
Kui i = 1 kuni Len(Str)
Kui IsNumeric(Mid(Str, i, 1)) Siis
Välju
Muidu
TextPart = TextPart & Mid(Str, i, 1)
Lõpeta Kui
Järgmine i
Lõpetamisfunktsioon
Silmus For-Next algab 1-ga ja lõpeb numbriga, mis tähistab märkide arvu stringis. Kood kasutab tsüklist ühe märgi eraldamiseks VBA funktsiooni Mid. Kui leitakse numbrimärk, käivitatakse käsk Exit For ja tsükkel lõpeb enneaegselt.
Kui märk ei ole numbriline, lisatakse see tagastatavale väärtusele (mis on sama, mis funktsiooni nimi). Ainus kord, kui tsükkel uurib iga tähemärki, on see, kui argumendina edastatud string ei sisalda numbrimärke.
Pesastatud For-Next näide
Silmuses võib olla suvaline arv lauseid ja tsüklid For-Next võib olla teiste For-Next tsüklite sees.
Järgmises näites kasutatakse pesastatud tsüklit For-Next, et sisestada juhuslikud arvud 12-rea-5-veerulisesse lahtrivahemikku. Pange tähele, et rutiin käivitab sisemise tsükli (silmus ridade loenduriga) üks kord iga välimise tsükli ( kolorenduriga tsükkel ) iteratsiooni jaoks . Teisisõnu, rutiin täidab käsku Cells(Row, Col) = Rnd 60 korda.

Need lahtrid täideti pesastatud For-Next tsükli abil.
Sub FillRange()
Dim Col As Long
Hämar rida nii pikk
Col = 1 kuni 5
Rea jaoks = 1 kuni 12
Lahtrid (rida, veerg) = Rnd
Järgmine rida
Järgmine kol
Lõpeta alam
Järgmises näites kasutatakse pesastatud For-Next silmuseid, et lähtestada kolmemõõtmeline massiiv väärtusega 100. See rutiin käivitab avalduse kõigi silmuste keskel (määramislause) 1000 korda (10 * 10 * 10) iga kord. i, j ja k erineva väärtuste kombinatsiooniga:
Sub NestedLoops()
Dim MyArray (10, 10, 10)
Dim i As Long
Dim j As Long
Dim k As Long
Kui i = 1 kuni 10
Kui j = 1 kuni 10
Kui k = 1 kuni 10
Minu Massiiv(i, j, k) = 100
Järgmine k
Järgmine j
Järgmine i
"Teised avaldused lähevad siia
Lõpeta alam
Siin on viimane näide, mis kasutab pesastatud For-Next silmuseid ja sammu väärtusega. See protseduur loob malelaua, muutes vahelduvate lahtrite taustavärvi.

Silmuste kasutamine malelaua mustri loomiseks.
Rea loendur liigub vahemikus 1 kuni 8. Kui-siis konstruktsioon määrab, millist pesastatud järgmiseks struktuuriks kasutada. Paaritute ridade puhul algab Col-loendur 2-ga. Paarisarvuliste ridade puhul algab Col-loendur 1-ga. Mõlemad tsüklid kasutavad sammu väärtust 2, nii et see mõjutab alternatiivseid lahtreid. Kaks lisalauset muudavad lahtrid ruudukujuliseks (täpselt nagu päris kabelaual).
Sub MakeCheckerboard()
Dim R As Long, C As Long
Kui R = 1 kuni 8
Kui WorksheetFunction.IsOdd(R) Siis
Kui C = 2 kuni 8, 2. samm
Lahtrid (R, C).Sisemus.Värv = 255
Järgmine C
Muidu
Kui C = 1 kuni 8, 2. samm
Lahtrid (R, C).Sisemus.Värv = 255
Järgmine C
Lõpeta Kui
Järgmine R
Read (“1:8”). Rea kõrgus = 35
Veerud ("A:H").Veerulaius = 6,5
Lõpeta alam