/ / Excel VBA hurok

Excel VBA Loop

Egyetlen hurok | Dupla hurok | Triple Loop | Do While Loop

A hurok az egyik legerősebb programozási technika. A hurok ban ben Excel VBA lehetővé teszi, hogy egy cellatartományt csak néhány kódsorral hágjon át.

Egyetlen hurok

Egyetlen hurok segítségével egy egydimenziós cellatartományon keresztül hurokhat.

Helyezzen egy parancsgombot a munkalapra, és adja hozzá a következő kódsorokat:

Dim i As Integer

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

Eredmény, ha rákattint a parancs gombra a lapon:

Egyetlen hurok Excel VBA-ban

Magyarázat: A For és Next közötti kódsorok hatszor lesznek végrehajtva. Az i = 1 esetében az Excel VBA a 100 értéket a cellába adja az 1. és az 1. oszlop metszéspontjában. Amikor az Excel VBA eléri a Következő i értéket, az i értéket 1-gyel növeli, és visszaugrik a For utasításhoz. I = 2 esetén az Excel VBA a 100-as értéket a cellába helyezi a 2. és az 1. oszlop metszéspontjában stb.

Megjegyzés: Jó gyakorlat, hogy mindig a behúzott szavakat fűzze be a For és a Next szavak között. Ez megkönnyíti a kód olvasását.

Dupla hurok

Dupla hurkot használhat a kétdimenziós cellák tartományán keresztül.

Helyezzen egy parancsgombot a munkalapra, és adja hozzá a következő kódsorokat:

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

Eredmény, ha rákattint a parancs gombra a lapon:

Dupla hurok Excel VBA-ban

Magyarázat: Az i = 1 és j = 1 esetén az Excel VBA a 100-as értéket a cellába adja az 1. és az 1. oszlop metszéspontjában. Amikor az Excel VBA eléri a Next j értéket, akkor az j-val növeli az 1 értéket, és visszaugrik a For j utasításhoz. Az i = 1 és j = 2 esetén az Excel VBA 100 értéket ad a cellába az 1. és a 2. oszlop metszéspontjában. Ezután az Excel VBA figyelmen kívül hagyja a Next j-t, mivel j csak 1-től 2-ig fut. Amikor az Excel VBA eléri a Next i , 1-tel növeli az i értéket, és visszalép a For i utasításra. I = 2 és j = 1 esetén az Excel VBA a 100-as értéket a cellába helyezi a 2. sor és az 1. oszlop metszéspontjában stb.

Triple Loop

Háromszoros hurok segítségével többféle Excel munkalapon kétdimenziós tartományon keresztül hurokhat.

Helyezzen egy parancsgombot a munkalapra, és adja hozzá a következő kódsorokat:

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

Magyarázat: A kettős hurok kódjához képest csak az a változás, hogy még egy hurokot adtunk hozzá, és hozzáadtunk munkalapokat (c). a cellák előtt, hogy megkapja a kétdimenziós tartományt az első lapra c = 1-re, a második lapot c = 2-re és a harmadik lapot c = 3-ra. Töltse le az Excel fájlt az eredmény megtekintéséhez.

Do While Loop

A For Next hurok mellett vannak más hurok is az Excel VBA-ban. Például a Do While Loop. A Do While és a Loop közötti kódot meg kell ismételni mindaddig, amíg a Do Do idő után a rész igaz.

1. Helyezzen egy parancsgombot a munkalapra és adja hozzá a következő kódsorokat:

Dim i As Integer
i = 1

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

Eredmény, ha rákattint a parancs gombra a lapon:

Do While Loop

Magyarázat: mindaddig, amíg i kisebb, mint 6, az Excel VBA a 20-as értéket az i és az 1. oszlop metszéspontjában a cellába helyezi, és i értéket 1-gyel növekszik. Az Excel VBA-ban (és más programozási nyelvekben) a "=" válik. Ez nem jelenti az egyenlőséget. Tehát i = i + 1 azt jelenti, i lesz i + 1. Más szóval: az i jelenlegi értékét vegye fel és add hozzá 1-et. Például, ha i = 1, akkor i lesz 1 + 1 = 2. Ennek eredményeként a 20 értéket az A oszlopba öt alkalommal helyezzük el (nem hat, mert az Excel VBA leáll, amikor i egyenlő 6-val).

2. Írjon be néhány számot az A oszlopba.

Bármely számú sor

3. Helyezzen egy parancsgombot a munkalapra, és adja hozzá a következő kódsorokat:

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

Eredmény, ha rákattint a parancs gombra a lapon:

Haladó Do While Loop

Magyarázat: mindaddig, amíg a sejtek (i, 1).Az érték nem üres (az <> nem egyenlő), az Excel VBA az i és a 2. oszlop metszéspontjában beírja az értéket a cellába, azaz 10-nél magasabb, mint az i és az 1. oszlop metszéspontjában lévő cellában lévő érték Az Excel VBA leáll, amikor i értéke 7, mert cellák (7, 1). A tartomány üres. Ez egy nagyszerű módja annak, hogy a munkalapon több soron keresztül hurokjunk át.

Szintén olvasható: