/ / Excel VBA Loop

Excel VBA Loop

Single Loop | Double Loop | Triple Loop | Gjør mens du går

Looping er en av de kraftigste programmeringsteknikkene. EN sløyfe i Excel VBA gjør det mulig å løpe gjennom en rekke celler med bare noen koder linjer.

Single Loop

Du kan bruke en enkelt sløyfe til å gå gjennom et endimensjonalt utvalg av celler.

Legg en kommandoknapp på regnearket og legg til følgende kodelinjer:

Dim i As Integer

For i = 1 To 6
    Cells(i, 1).Value = 100
Next i

Resultat når du klikker på kommandoknappen på arket:

Single Loop i Excel VBA

Forklaring: Kodelinjene mellom For og Next vil bli utført seks ganger. For i = 1, går Excel VBA inn i verdien 100 i cellen ved krysset mellom rad 1 og kolonne 1. Når Excel VBA når Next i, øker det jeg med 1 og hopper tilbake til For-setningen. For i = 2, går Excel VBA inn i verdien 100 i cellen ved krysset mellom rad 2 og kolonne 1, etc.

Merk: Det er god praksis å alltid sette inn (tab) koden mellom ordene for og neste. Dette gjør at koden din er enklere å lese.

Double Loop

Du kan bruke en dobbel sløyfe til å løpe gjennom et todimensjonalt utvalg av celler.

Legg en kommandoknapp på regnearket og legg til følgende kodelinjer:

Dim i As Integer, j As Integer

For i = 1 To 6
    For j = 1 To 2
        Cells(i, j).Value = 100
    Next j
Next i

Resultat når du klikker på kommandoknappen på arket:

Double Loop i Excel VBA

Forklaring: For i = 1 og j = 1, går Excel VBA inn i verdien 100 i cellen ved krysset mellom rad 1 og kolonne 1. Når Excel VBA når Next j, øker det j med 1 og hopper tilbake til For-j-setningen. For i = 1 og j = 2, går Excel VBA inn i verdien 100 i cellen ved krysset mellom rad 1 og kolonne 2. Deretter ignorerer Excel VBA Neste j fordi j bare går fra 1 til 2. Når Excel VBA når Neste jeg , det øker jeg med 1 og hopper tilbake til For i-setningen. For i = 2 og j = 1 går Excel VBA inn i verdien 100 i cellen ved krysset mellom rad 2 og kolonne 1, etc.

Triple Loop

Du kan bruke en tredobbelt sløyfe til å gå gjennom todimensjonale områder på flere Excel-regneark.

Legg en kommandoknapp på regnearket og legg til følgende kodelinjer:

Dim c As Integer, i As Integer, j As Integer

For c = 1 To 3
    For i = 1 To 6
        For j = 1 To 2
            Worksheets(c).Cells(i, j).Value = 100
        Next j
    Next i
Next c

Forklaring: Den eneste endringen som er gjort i forhold til koden for dobbeltsløyfen, er at vi har lagt til en ekstra sløyfe og lagt til regneark (c). foran cellene for å få det todimensjonale området på det første arket for c = 1, det andre arket for c = 2 og det tredje arket for c = 3. Last ned Excel-filen for å se dette resultatet.

Gjør mens du går

I tillegg til Next Loop er det andre looper i Excel VBA. For eksempel gjør Do while Loop. Koden plassert mellom Do While and Loop vil gjentas så lenge delen etter Do While er sann.

1. Sett en kommandoknapp på regnearket og legg til følgende kodelinjer:

Dim i As Integer
i = 1

Do While i < 6
    Cells(i, 1).Value = 20
    i = i + 1
Loop

Resultat når du klikker på kommandoknappen på arket:

Gjør mens du går

Forklaring: så lenge jeg er lavere enn 6, går Excel VBA inn i verdien 20 i cellen ved krysset mellom rad i og kolonne 1 og trinn 1 av 1. I Excel VBA (og i andre programmeringsspråk) betyr symbolet "=" blir. Det betyr ikke like. Så jeg = jeg + 1 betyr at jeg blir i + 1. Med andre ord: ta nåverdien av i og legg til 1 til den. For eksempel, hvis jeg = 1, blir jeg 1 + 1 = 2. Som et resultat vil verdien 20 bli plassert i kolonne A fem ganger (ikke seks fordi Excel VBA stopper når jeg er lik 6).

2. Skriv inn noen tall i kolonne A.

Eventuelle antall rader

3. Sett en kommandoknapp på regnearket og legg til følgende kodelinjer:

Dim i As Integer
i = 1

Do While Cells(i, 1).Value <> ""
    Cells(i, 2).Value = Cells(i, 1).Value + 10
    i = i + 1
Loop

Resultat når du klikker på kommandoknappen på arket:

Avansert Gjør mens Loop

Forklaring: Så lenge Celler (jeg, 1).Verdien er ikke tom (<> betyr ikke lik), Excel VBA går inn i verdien i cellen ved krysset mellom rad i og kolonne 2, som er 10 høyere enn verdien i cellen ved skjæringspunktet av rad i og kolonne 1 . Excel VBA stopper når jeg er lik 7 fordi celler (7, 1) .Value er tom. Dette er en fin måte å løse gjennom et antall rader på et regneark.

Les også: