/ / Excel VBA Loop

Excel VBA Loop

Jedna slučka | Double Loop | Triple Loop | Do While Loop

Looping je jednou z najsilnejších programovacích techník. slučka v Excel VBA umožňuje prechádzať celým radom buniek pomocou niekoľkých riadkov kódu.

Jedna slučka

Môžete použiť jedinú slučku na prechod cez jednorozmerný rozsah buniek.

Do pracovného hárka umiestnite príkazové tlačidlo a pridajte nasledujúce riadky kódu:

Dim i As Integer

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

Výsledok po kliknutí na príkazové tlačidlo na hárku:

Jedna slučka v programe Excel VBA

vysvetlenie: Čiarové kódy medzi For a Next sa vykonajú šesťkrát. Pre hodnotu i = 1 Excel VBA zadá hodnotu 100 do bunky na priesečníku riadku 1 a stĺpca 1. Keď Excel VBA dosiahne Next i, zvyšuje sa s 1 a preskočí späť na príkaz For. Pre hodnotu i = 2 Excel VBA zadá hodnotu 100 do bunky v priesečníku riadku 2 a stĺpca 1 atď.

Poznámka: Dobrým postupom je vždy odsadzovať (tab) kód medzi slovami "Pre" a "Nasledujúci". To umožňuje ľahšie čítanie kódu.

Double Loop

Môžete použiť dvojitú slučku na prechod cez dvojrozmerný rozsah buniek.

Do pracovného hárka umiestnite príkazové tlačidlo a pridajte nasledujúce riadky kódu:

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

Výsledok po kliknutí na príkazové tlačidlo na hárku:

Dvojité slučky v programe Excel VBA

vysvetlenie: Pre hodnotu i = 1 a j = 1 Excel VBA zadá hodnotu 100 do bunky v priesečníku riadku 1 a stĺpca 1. Keď Excel VBA dosiahne Next j, zvýši j s 1 a preskočí späť na príkaz For j. Pre hodnoty i = 1 a j = 2 Excel VBA zadá hodnotu 100 do bunky v priesečníku riadku 1 a stĺpca 2. Následne Excel VBA ignoruje nasledujúci j, pretože j beží iba od 1 do 2. Keď Excel VBA dosiahne Next i , zvyšuje sa s 1 a preskočí späť na vyhlásenie For i. Pre i = 2 a j = 1 Excel VBA zadá hodnotu 100 do bunky v priesečníku riadku 2 a stĺpca 1 atď.

Triple Loop

Môžete použiť trojitú slučku na slučky cez dvojrozmerné rozsahy na viacerých pracovných hárkoch programu Excel.

Do pracovného hárka umiestnite príkazové tlačidlo a pridajte nasledujúce riadky kódu:

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

vysvetlenie: Jedinou zmenou v porovnaní s kódom pre dvojitú slučku je, že sme pridali ešte jednu slučku a pridali sme pracovné hárky (c). pred bunkami získať dvojrozmerný rozsah na prvom hárku pre c = 1, druhý hárok pre c = 2 a tretí hárok pre c = 3. Stiahnite si súbor Excel, aby ste videli tento výsledok.

Do While Loop

Okrem slučky For Next existujú aj iné slučky v programe Excel VBA. Napríklad Do While Loop. Kód umiestnený medzi Do While a Loop sa bude opakovať tak dlho, kým časť po Do While je pravdivá.

1. Na pracovný hárok umiestnite príkazové tlačidlo a pridajte nasledujúce riadky kódu:

Dim i As Integer
i = 1

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

Výsledok po kliknutí na príkazové tlačidlo na hárku:

Do While Loop

vysvetlenie: ak je hodnota I nižšia ako 6, program Excel VBA zadá hodnotu 20 do bunky v priesečníku riadka i a stĺpca 1 a zvýši hodnotu o 1. V programe Excel VBA (av iných programovacích jazykoch) symbol "=" znamená stane. Neznamená to to isté. Takže i = i + 1 znamená, že sa stane i + 1. Inými slovami: vziať súčasnú hodnotu i a pridať 1 k nej. Napríklad, ak i = 1, stane sa 1 + 1 = 2. V dôsledku toho sa hodnota 20 umiestni do stĺpca A päťkrát (nie šesť, pretože Excel VBA sa zastaví, keď sa rovná 6).

2. Zadajte niektoré čísla do stĺpca A.

Akýkoľvek počet riadkov

3. Na pracovný hárok umiestnite príkazové tlačidlo a pridajte nasledujúce riadky kódu:

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

Výsledok po kliknutí na príkazové tlačidlo na hárku:

Rozšírené robiť do okruhu

Vysvetlenie: ak sú bunky (i, 1).Hodnota nie je prázdna (<> znamená, že sa nerovná), Excel VBA zadá hodnotu do bunky v priesečníku riadka i a stĺpca 2, čo je o 10 vyššia ako hodnota v bunke v priesečníku riadku i a stĺpca 1 Excel VBA sa zastaví, keď sa rovná 7, pretože bunky (7, 1) .Value je prázdny. Je to skvelý spôsob, ako prechádzať ľubovoľným počtom riadkov na pracovnom hárku.

Tiež si prečítajte: