/ / Excel VBA-lus

Excel VBA-lus

Enkele ronde | Dubbele lus | Triple Loop | Do While Loop

Looping is een van de krachtigste programmeertechnieken. EEN lus in Excel VBA stelt u in staat door een aantal cellen te lopen met slechts een paar coderegels.

Enkele ronde

U kunt een enkele lus gebruiken om door een eendimensionaal bereik van cellen te lopen.

Plaats een opdrachtknop op uw werkblad en voeg de volgende coderegels toe:

Dim i As Integer

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

Resultaat wanneer u op de opdrachtknop op het blad klikt:

Enkele lus in Excel VBA

Uitleg: De coderegels tussen Voor en Volgende worden zes keer uitgevoerd. Voor i = 1 voert Excel VBA de waarde 100 in de cel in op het kruispunt van rij 1 en kolom 1. Wanneer Excel VBA Nexti bereikt, verhoogt het ik met 1 en springt het terug naar de For-instructie. Voor i = 2 voert Excel VBA de waarde 100 in de cel in op het kruispunt van rij 2 en kolom 1, enz.

Opmerking: het is een goede gewoonte om altijd de code tussen de woorden Voor en Volgende in te voegen (tab). Dit maakt uw code leesbaarder.

Dubbele lus

U kunt een dubbele lus gebruiken om door een tweedimensionaal celbereik te lopen.

Plaats een opdrachtknop op uw werkblad en voeg de volgende coderegels toe:

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

Resultaat wanneer u op de opdrachtknop op het blad klikt:

Double Loop in Excel VBA

Uitleg: Voor i = 1 en j = 1, voert Excel VBA de waarde 100 in in de cel op het snijpunt van rij 1 en kolom 1. Wanneer Excel VBA Next j bereikt, verhoogt het j met 1 en springt het terug naar de Forj-instructie. Voor i = 1 en j = 2, voert Excel VBA de waarde 100 in de cel in op het kruispunt van rij 1 en kolom 2. Vervolgens negeert Excel VBA Volgende j omdat j alleen van 1 tot 2 wordt uitgevoerd. Excel VBA bereikt Volgende i , het verhoogt i met 1 en springt terug naar de For i-verklaring. Voor i = 2 en j = 1, voert Excel VBA de waarde 100 in de cel in op het kruispunt van rij 2 en kolom 1, enz.

Triple Loop

U kunt een drievoudige lus gebruiken om tweedimensionale bereiken door te lussen op meerdere Excel-werkbladen.

Plaats een opdrachtknop op uw werkblad en voeg de volgende coderegels toe:

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

Uitleg: De enige wijziging in vergelijking met de code voor de dubbele lus is dat we nog een lus hebben toegevoegd en werkbladen hebben toegevoegd (c). voor Cellen om het tweedimensionale bereik op het eerste blad te krijgen voor c = 1, het tweede blad voor c = 2 en het derde blad voor c = 3. Download het Excel-bestand om dit resultaat te zien.

Do While Loop

Naast de For Next-lus zijn er nog andere loops in Excel VBA. Bijvoorbeeld de Do While Loop. De code die tussen Do While en Loop wordt geplaatst, wordt herhaald zolang het gedeelte na Do While waar is.

1. Plaats een opdrachtknop op uw werkblad en voeg de volgende coderegels toe:

Dim i As Integer
i = 1

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

Resultaat wanneer u op de opdrachtknop op het blad klikt:

Do While Loop

Uitleg: zolang i lager is dan 6, voert Excel VBA de waarde 20 in de cel in op het snijpunt van rij i en kolom 1 en verhoogt i in 1. In Excel VBA (en in andere programmeertalen) betekent het symbool "=" wordt. Het betekent niet gelijk. Dus i = i + 1 betekent dat i i + 1 wordt. Met andere woorden: neem de huidige waarde van i en voeg er 1 aan toe. Als i = 1, wordt i bijvoorbeeld 1 + 1 = 2. Als gevolg hiervan wordt de waarde 20 vijf keer in kolom A geplaatst (niet zes omdat Excel VBA stopt wanneer ik 6 ben).

2. Voer enkele cijfers in kolom A in.

Een willekeurig aantal rijen

3. Plaats een opdrachtknop op uw werkblad en voeg de volgende coderegels toe:

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

Resultaat wanneer u op de opdrachtknop op het blad klikt:

Advanced Do While Loop

Uitleg: zolang cellen (i, 1).Waarde is niet leeg (<> betekent niet gelijk aan), Excel VBA voert de waarde in de cel in op het snijpunt van rij i en kolom 2, die 10 hoger is dan de waarde in de cel op het snijpunt van rij i en kolom 1 Excel VBA stopt wanneer ik 7 is omdat cellen (7, 1) .Waarde leeg is. Dit is een geweldige manier om een ​​willekeurig aantal rijen in een werkblad door te lussen.

Lees ook: