Den enklaste typen av loop i Excel VBA-programmering är en For-Next loop. Slingan styrs av en räknarvariabel, som börjar vid ett värde och stannar vid ett annat värde. Påståendena mellan For-satsen och Next-satsen är de påståenden som upprepas i slingan.
Ett For-Next exempel
Följande exempel använder en For-Next-loop för att summera de första 1 000 positiva talen. Variabeln Total börjar som noll. Sedan uppstår loopingen. Variabeln Cnt är loopräknaren. Den börjar som 1 och ökas med 1 varje gång genom slingan. Slingan slutar när Cnt är 1 000.
Det här exemplet har bara ett uttalande i loopen. Detta uttalande lägger till värdet av Cnt till variabeln Total. När slingan är klar visar en MsgBox summan av siffrorna.
Sub AddNumbers()
Dim totalt som dubbel
Dim Cnt As Long
Totalt = 0
För Cnt = 1 till 1000
Totalt = Totalt + Cnt
Nästa Cnt
MsgBox Totalt
Avsluta Sub
Eftersom loopräknaren är en normal variabel kan du skriva kod för att ändra dess värde inom kodblocket mellan For- och Next-satserna. Detta är dock en mycket dålig praxis.
För-nästa exempel med ett steg
Du kan använda ett stegvärde för att hoppa över några räknarvärden i en For-Next-loop. Här är det föregående exemplet, omskrivet för att bara summera de udda talen mellan 1 och 1 000:
Sub AddOddNumbers()
Dim totalt som dubbel
Dim Cnt As Long
Totalt = 0
För Cnt = 1 till 1000 Steg 2
Totalt = Totalt + Cnt
Nästa Cnt
MsgBox Totalt
Avsluta Sub
Den här gången börjar Cnt som 1 och får sedan värden på 3, 5, 7 och så vidare. Stegvärdet bestämmer hur räknaren inkrementeras. Observera att det övre slingvärdet (1000) faktiskt inte används eftersom det högsta värdet på Cnt kommer att vara 999.
Här är ett annat exempel som använder stegvärdet 3. Den här proceduren fungerar med det aktiva arket och tillämpar ljusgrå nyanser på var tredje rad, från rad 1 till rad 100.
Sub ShadeEveryThird Row()
Dim i As Long
För i = 1 till 100 Steg 3
Rader(i).Interior.Color = RGB(200, 200, 200)
Nästa i
Avsluta Sub
Kolla in resultatet av att köra detta makro.

Använda en slinga för att tillämpa bakgrundsskuggning på rader.
Ett For-Next-exempel med en Exit For-sats
En For-Next-loop kan också inkludera en eller flera Exit For-satser inom loopen. När VBA stöter på detta uttalande, avslutas loopen omedelbart.
Följande exempel visar Exit For-satsen. Denna rutin är en funktionsprocedur, avsedd att användas i en kalkylbladsformel. Funktionen accepterar ett argument (en variabel som heter Str) och returnerar tecknen till vänster om den första numeriska siffran. Till exempel, om argumentet är "KBR98Z" returnerar funktionen "KBR."
Funktion TextPart(Str)
Dim i As Long
TextPart = ""
För i = 1 Till Len(Str)
Om IsNumeric(Mid(Str, i, 1)) Då
Avsluta för
Annan
TextPart = TextPart & Mid(Str, i, 1)
Avsluta om
Nästa i
Avsluta funktion
For-Next-slingan börjar med 1 och slutar med siffran som representerar antalet tecken i strängen. Koden använder VBA:s Mid-funktion för att extrahera ett enda tecken i slingan. Om ett numeriskt tecken hittas exekveras Exit For-satsen och loopen slutar för tidigt.
Om tecknet inte är numeriskt läggs det till det returnerade värdet (vilket är samma som funktionens namn). Den enda gången loopen kommer att undersöka varje tecken är om strängen passerade eftersom argumentet inte innehåller några numeriska tecken.
Ett kapslat For-Next-exempel
Du kan ha valfritt antal påståenden i loopen och kapsla For-Next-loopar inuti andra For-Next-loopar.
Följande exempel använder en kapslad For-Next-slinga för att infoga slumpmässiga tal i ett cellintervall med 12 rader för 5 kolumner. Lägg märke till att rutinen exekverar den inre slingan (loopen med radräknaren) en gång för varje iteration av den yttre slingan (loopen med Col-räknaren). Med andra ord, rutinen exekverar satsen Cells(Row, Col) = Rnd 60 gånger.

Dessa celler fylldes med hjälp av en kapslad For-Next-loop.
Sub FillRange()
Dim Col As Long
Dim rad så lång
För kol = 1 till 5
För rad = 1 till 12
Celler (rad, kol) = Rnd
Nästa rad
Nästa Col
Avsluta Sub
Nästa exempel använder kapslade For-Next-loopar för att initiera en tredimensionell array med värdet 100. Denna rutin exekverar satsen mitt i alla slingor (tilldelningssatsen) 1 000 gånger (10 * 10 * 10), varje gång med en annan kombination av värden för i, j och k:
Sub NestedLoops()
Dim MyArray(10, 10, 10)
Dim i As Long
Dim j As Long
Dim k As Long
För i = 1 till 10
För j = 1 till 10
För k = 1 till 10
MyArray(i, j, k) = 100
Nästa k
Nästa j
Nästa i
' Andra uttalanden går här
Avsluta Sub
Här är ett sista exempel som använder kapslade For-Next-loopar, med ett stegvärde. Denna procedur skapar ett schackbräde genom att ändra bakgrundsfärgen för alternerande celler.

Använda öglor för att skapa ett rutmönster.
Radräknaren går från 1 till 8. En If-Then-konstruktion avgör vilken kapslad For-Next-struktur som ska användas. För udda rader börjar Col-räknaren med 2. För jämna rader börjar Col-räknaren med 1. Båda slingorna använder ett stegvärde på 2, så alternativa celler påverkas. Ytterligare två påståenden gör cellerna fyrkantiga (precis som ett riktigt schackbräde).
Sub MakeCheckerboard()
Dim R As Long, C As Long
För R = 1 till 8
Om WorksheetFunction.IsOdd(R) Då
För C = 2 till 8 Steg 2
Celler (R, C). Interiör. Färg = 255
Nästa C
Annan
För C = 1 till 8 Steg 2
Celler (R, C). Interiör. Färg = 255
Nästa C
Avsluta om
Nästa R
Rader(“1:8”). Radhöjd = 35
Kolumner(“A:H”). Kolumnbredd = 6,5
Avsluta Sub