/ / Excel VBA Loop

Excel VBA Loop

Single Loop | Double Loop | Triple Loop | Gør mens løbe

Looping er en af ​​de mest kraftfulde programmeringsteknikker. EN løkke i Excel VBA giver dig mulighed for at løbe gennem en række celler med blot et par koder linjer.

Single Loop

Du kan bruge en enkelt loop til at løkke gennem et endimensionelt udvalg af celler.

Placer en kommandoknap på dit regneark og tilføj 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: Kodelinjerne mellem For og Next vil blive udført seks gange. For i = 1, indtaster Excel VBA værdien 100 ind i cellen ved skæringspunktet mellem række 1 og kolonne 1. Når Excel VBA når Next i, øges det jeg med 1 og hopper tilbage til For-sætningen. For i = 2, indtaster Excel VBA værdien 100 ind i cellen ved krydset af række 2 og søjle 1 mv.

Bemærk: Det er god praksis at altid indrykke (tab) koden mellem ordene For og Next. Dette gør din kode lettere at læse.

Double Loop

Du kan bruge en dobbelt loop til at løkke gennem en todimensionel række celler.

Placer en kommandoknap på dit regneark og tilføj 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 indtaster Excel VBA værdien 100 i cellen ved skæringspunktet mellem række 1 og kolonne 1. Når Excel VBA når Next j, øges det j med 1 og hopper tilbage til For-j-sætningen. For i = 1 og j = 2 ignorerer Excel VBA værdien 100 i cellen ved skæringspunktet mellem række 1 og søjle 2. Derefter ignorerer Excel VBA Næste j, fordi j kun kører fra 1 til 2. Når Excel VBA når Næste jeg , det øger jeg med 1 og hopper tilbage til For i-udsagnet. For i = 2 og j = 1 indtaster Excel VBA værdien 100 ind i cellen ved skæringspunktet mellem række 2 og søjle 1 osv.

Triple Loop

Du kan bruge en tredobbelt loop til at løbe gennem todimensionelle intervaller på flere Excel-regneark.

Placer en kommandoknap på dit regneark og tilføj 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 ændring, der er foretaget i forhold til koden for dobbeltløkken, er, at vi har tilføjet endnu en sløjfe og tilføjet regneark (c). foran cellerne for at få det todimensionelle område på det første ark til c = 1, det andet ark til c = 2 og det tredje ark til c = 3. Download Excel-filen for at se dette resultat.

Gør mens løbe

Udover Next Loop er der også andre sløjfer i Excel VBA. For eksempel gør Do While Loop. Koden placeret mellem Do While and Loop gentages, så længe delen efter Do While er sand.

1. Placer en kommandoknap på dit regneark og tilføj 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:

Gør mens løbe

Forklaring: så længe jeg er lavere end 6, indtaster Excel VBA værdien 20 ind i cellen ved skæringspunktet for række i og kolonne 1 og trin 1 med 1. I Excel VBA (og i andre programmeringssprog) betyder symbolet "=" bliver til. Det betyder ikke lige. Så jeg = jeg + 1 betyder, at jeg bliver i + 1. Med andre ord: tag nuværdien af ​​i og tilføj 1 til den. For eksempel, hvis jeg = 1, bliver jeg 1 + 1 = 2. Som følge heraf bliver værdien 20 anbragt i kolonne A fem gange (ikke seks fordi Excel VBA stopper, når jeg er lig med 6).

2. Indtast nogle tal i kolonne A.

Enhver række rækker

3. Placer en kommandoknap på dit regneark og tilføj 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:

Advanced Do While Loop

Forklaring: så længe celler (i, 1).Værdien er ikke tom (<> betyder ikke lig med), Excel VBA indtaster værdien i cellen ved skæringspunktet for række i og kolonne 2, der er 10 højere end værdien i cellen ved skæringspunktet for række i og kolonne 1 . Excel VBA stopper når jeg er lig med 7 fordi celler (7, 1) .Value er tom. Dette er en fantastisk måde at løbe gennem et vilkårligt antal rækker på et regneark.

Læs også: