/ / Excel VBA Loop

Excel VBA Loop

Singel Loop | Double Loop | Triple Loop | Gör medan Loop

Looping är en av de mest kraftfulla programmeringsteknikerna. en slinga i Excel VBA gör det möjligt för dig att slinga igenom en rad celler med bara några koder.

Singel Loop

Du kan använda en enda slinga för att slinga genom ett ettdimensionellt cellområde.

Placera en kommandoknapp på ditt arbetsblad och lägg till följande kodlinjer:

Dim i As Integer

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

Resultat när du klickar på kommandoknappen på arket:

Singel Loop i Excel VBA

Förklaring: Kodslinjerna mellan För och Nästa kommer att köras sex gånger. För I = 1, matar Excel VBA in värdet 100 i cellen vid skärningspunkten i rad 1 och kolumn 1. När Excel VBA når Next i, ökar det jag med 1 och hoppar tillbaka till For-förklaringen. För i = 2, matar Excel VBA värdet 100 in i cellen vid skärningspunkten mellan rad 2 och kolumn 1, etc.

Obs! Det är bra att alltid ange (flik) koden mellan orden För och Nästa. Detta gör din kod lättare att läsa.

Double Loop

Du kan använda en dubbel slinga att slingra genom ett tvådimensionellt cellområde.

Placera en kommandoknapp på ditt arbetsblad och lägg till följande kodlinjer:

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 klickar på kommandoknappen på arket:

Double Loop i Excel VBA

Förklaring: För i = 1 och j = 1 går Excel VBA in i värdet 100 i cellen vid korsningen i rad 1 och kolumn 1. När Excel VBA når Next j, ökar det j med 1 och hoppar tillbaka till Forj-satsen. För i = 1 och j = 2, går Excel VBA in i värdet 100 i cellen vid skärningspunkten i rad 1 och kolumn 2. Därefter ignorerar Excel VBA Nästa j eftersom j endast går från 1 till 2. När Excel VBA når Next i , det ökar jag med 1 och hoppar tillbaka till For i-utlåtandet. För i = 2 och j = 1, matar Excel VBA värdet 100 in i cellen vid skärningspunkten mellan rad 2 och kolumn 1 etc.

Triple Loop

Du kan använda en trippel slinga för att slinga i tvådimensionella intervall på flera Excel-kalkylblad.

Placera en kommandoknapp på ditt arbetsblad och lägg till följande kodlinjer:

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

Förklaring: Den enda förändringen som gjorts jämfört med koden för dubbel-slingan är att vi har lagt till ytterligare en slinga och lagt till kalkylblad (c). framför cellerna för att få det tvådimensionella intervallet på det första arket för c = 1, det andra arket för c = 2 och det tredje arket för c = 3. Hämta Excel-filen för att se detta resultat.

Gör medan Loop

Förutom Next Loop finns det andra loopar i Excel VBA. Till exempel gör Do While Loop. Kod placerad mellan Do While and Loop kommer att upprepas så länge som delen efter Do While är sant.

1. Placera en kommandoknapp på ditt arbetsblad och lägg till följande kodlinjer:

Dim i As Integer
i = 1

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

Resultat när du klickar på kommandoknappen på arket:

Gör medan Loop

Förklaring: så länge jag är lägre än 6, går Excel VBA in i värdet 20 i cellen vid skärningspunkten i rad i och kolumn 1 och steg 1 med 1. I Excel VBA (och i andra programmeringsspråk) betyder symbolen "=" blir. Det betyder inte lika. Så jag = jag + 1 betyder att jag blir i + 1. Med andra ord: ta nuvärdet av i och lägg till 1 till det. Till exempel, om jag = 1 blir jag 1 + 1 = 2. Som ett resultat kommer värdet 20 att placeras i kolumn A fem gånger (inte sex eftersom Excel VBA slutar när jag är lika med 6).

2. Ange några siffror i kolumn A.

Eventuellt antal rader

3. Placera en kommandoknapp på ditt arbetsblad och lägg till följande kodlinjer:

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 klickar på kommandoknappen på arket:

Avancerad gör medan loopning

Förklaring: så länge som celler (jag, 1).Värdet är inte tomt (<> betyder inte lika med), Excel VBA anger värdet i cellen vid skärningspunkten i rad i och kolumn 2, som är 10 högre än värdet i cellen vid skärningspunkten i rad i och kolumn 1 . Excel VBA slutar när jag är lika med 7 eftersom celler (7, 1). Valet är tomt. Detta är ett bra sätt att gå igenom ett antal rader i ett kalkylblad.

Läs också: