/ / Excel VBA Loop

Excel VBA Loop

Jednoduchá smyčka | Double Loop | Triple Loop | Do While Loop

Looping je jednou z nejsilnějších programovacích technik. A smyčka v Excel VBA umožňuje smyčku přes celou řadu buněk s několika řádky kódů.

Jednoduchá smyčka

Jednou smyčku můžete použít pro smyčku přes jednorozměrný rozsah buněk.

Umístěte na pracovní list příkazové tlačítko a přidejte následující řádky kódu:

Dim i As Integer

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

Výsledek po klepnutí na příkazové tlačítko na listu:

Jednoduchá smyčka v aplikaci Excel VBA

Vysvětlení: Řádky kódu mezi Pro a Nás budou provedeny šestkrát. Pro hodnotu i = 1 Excel VBA zadá hodnotu 100 do buňky v průsečíku řádku 1 a sloupce 1. Když Excel VBA dosáhne Next i, zvýší i s 1 a přeskočí zpět na příkaz For. Pro i = 2 Excel VBA zadá hodnotu 100 do buňky v průsečíku řádku 2 a sloupce 1 atd.

Poznámka: je dobré postupovat vždy v odsazení (tabulátoru) kódu mezi slovy Pro a Následující. To usnadňuje čtení vašeho kódu.

Double Loop

Můžete použít dvojitou smyčku pro smyčku přes dvojrozměrný rozsah buněk.

Umístěte na pracovní list příkazové tlačítko a přidejte následující řádky 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ýsledek po klepnutí na příkazové tlačítko na listu:

Double Loop v aplikaci Excel VBA

Vysvětlení: Pro hodnoty i = 1 a j = 1 Excel VBA zadá hodnotu 100 do buňky v průsečíku řádku 1 a sloupce 1. Když Excel VBA dosáhne Next j, zvýší j s 1 a přeskočí zpět do příkazu For j. Pro hodnotu i = 1 a j = 2 Excel VBA zadá hodnotu 100 do buňky v průsečíku řádku 1 a sloupce 2. Následně Excel VBA ignoruje Další j, protože j běží pouze od 1 do 2. Když Excel VBA dosáhne Next i , zvyšuje i s 1 a přeskočí zpět do prohlášení For i. Pro hodnotu i = 2 a j = 1 Excel VBA zadá hodnotu 100 do buňky v průsečíku řádku 2 a sloupce 1 atd.

Triple Loop

Můžete použít trojité smyčky pro smyčku přes dvojrozměrné rozsahy na více pracovních listů aplikace Excel.

Umístěte na pracovní list příkazové tlačítko a přidejte následující řádky 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

Vysvětlení: Jedinou změnou provedenou ve srovnání s kódem pro dvojitou smyčku je to, že jsme přidali ještě jednu smyčku a přidali pracovní listy (c). před buňkami získáte dvourozměrný rozsah na prvním listu pro c = 1, druhý list pro c = 2 a třetí list pro c = 3. Stáhněte soubor aplikace Excel, abyste viděli tento výsledek.

Do While Loop

Kromě smyčky For Next existují další smyčky v aplikaci Excel VBA. Například Loop Do While. Kód umístěný mezi Do While a Loop se bude opakovat tak dlouho, dokud bude část po Do While pravdivá.

1. Vložte příkazové tlačítko do listu a přidejte následující řádky kódu:

Dim i As Integer
i = 1

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

Výsledek po klepnutí na příkazové tlačítko na listu:

Do While Loop

Vysvětlení: pokud je hodnota nižší než 6, Excel VBA zadá hodnotu 20 do buňky v průsečíku řady i a sloupce 1 a inkrementuje i 1. V programu Excel VBA (a v jiných programovacích jazycích) symbol "=" znamená stává se. Neznamená to, že by to bylo stejné. Takže i = i + 1 znamená, že se stane i + 1. Jinými slovy: vzít současnou hodnotu i a přidat 1 k ní. Například pokud i = 1, stává se 1 + 1 = 2. V důsledku toho bude hodnota 20 vložena do sloupce A pětkrát (ne šest, protože Excel VBA se zastaví, když se rovná 6).

2. Do sloupce A. zadejte některá čísla.

Libovolný počet řádků

3. Do pracovního listu umístěte příkazové tlačítko a přidejte následující řádky 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ýsledek po klepnutí na příkazové tlačítko na listu:

Rozšířené Do While Loop

Vysvětlení: pokud buňky (i, 1).Hodnota není prázdná (<> znamená, že se nerovná), aplikace Excel VBA zadá hodnotu do buňky v průsečíku řady i a sloupce 2, tj. 10 je vyšší než hodnota v buňce v průsečíku řádku i a sloupce 1 Excel VBA se zastaví, když se rovná 7, protože buňky (7, 1). Hodnota je prázdná. Je to skvělý způsob, jak přenést libovolný počet řádků na pracovní list.

Také si přečtěte: