Smyčky Excel VBA
Smyčky lze považovat za nejlépe fungující součást VBA a lze je také považovat za srdce maker. Obvykle vám pomohou snížit počet řádků ve vašem kódu a dělat práci během několika minut, což může člověku trvat hodiny.
V každodenním životě přichází programátor s případy, kdy potřebuje znovu a znovu spouštět stejnou sadu kódů. Říká se tomu opakování. Je zřejmé, že pokaždé, když spustíte stejný kód, získáte přibližně stejný výsledek s částečnou změnou proměnné. Smyčka má řadu výhod, ale nejdůležitější ze všech je automatizace. Pomáhá automatizovat věci.
Pokud jste dosud nepoužívali skript VBA, stačí otevřít vynikající sešit a stisknout Alt + F11 . Otevře se projekt VBA.
Pojďme hlouběji dovnitř.
Předpokládejme, že jsme chtěli vytisknout 1 až 10 čísel najednou. Můžeme to udělat pomocí následujícího kódu.
Kód:
Sub loop1 () Debug.Print 1 Debug.Print 2 Debug.Print 4 Debug.Print 4 Debug.Print 5 Debug.Print 6 Debug.Print 7 Debug.Print 8 Debug.Print 9 Debug.Print 10 End Sub
Pokud se kód rychle dostanete, přidal jsem Debug.Print jeden po druhém, abych vytiskl čísla od 1 do 10. Po spuštění kódu můžeme vidět výstup v Okamžitém okně. Okno Immediate otevřete stisknutím kláves Ctrl + G kdekoli v Excelu.
Spusťte kód pomocí klávesy F5 nebo ručně, jak je znázorněno na níže uvedeném snímku obrazovky. Zkontrolujte tedy výstup tohoto kódu.
Typy smyček VBA v Excelu
Protože jste programátor, nikdy nebudete mít zájem psát opakující se řádky, které budou mít stejný výsledek. Chtěli byste to automatizovat. Proto uvidíme různé smyčky Excel VBA a jak je používat pomocí příkladů.
Typ # 1 - VBA pro další smyčku
Pro další VBA smyčka nám umožňuje procházet buněčným rozsahem a provádět stejný úkol pro každou buňku specifikovanou ve smyčce. Zde musí být uvedeno počáteční a konečné číslo.
kód:
Sub loop1 () Pro i = 1 až 10 buněk (i, 1). Hodnota = i Next i End Sub
Tento kód dává přesně stejný výstup jako předchozí. Nejpozoruhodnější věcí v tomto kódu je však snížení počtu řádků. Zmenšili jsme 12-řádkový kód pouze na 5-řádkový kód.
V tomto kódu je loop1 název makra. Smyčka for začíná od i = 1, vytiskne hodnotu i (tj. 1) pod buňkou Excel a na další se vrátí na začátek smyčky for a provede i = 2 vytiskne hodnotu i (tj. 2) v další buňce a tak dále, dokud kód nedosáhne své poslední hodnoty, tj. 10. Jakmile kód dosáhne poslední hodnoty i (10), kód se sám ukončí kvůli nedostupnosti jakékoli celé hodnoty nad 10.
Spusťte kód pomocí klávesy F5 nebo ručně. Takže můžete vidět výstup níže.
Typ # 2 - VBA pro smyčku s krokem vpřed
Jak jste viděli v předchozím příkladu smyčky, měl jsem nárůst o 1 krok. Ve výchozím nastavení je hodnota kroku považována za 1 ve VBA. Je však možné stanovit vlastní krok? Předpokládejme, že chcete vidět pouze sudá čísla mezi 1 a 20. Jak je to možné?
Jak naznačuje obecná matematika, čísla, která jsou od sebe vzdálena 2 (počínaje prvním sudým číslem 2), jsou považována za sudá čísla, že?
Použijeme stejnou logiku. Viz níže kód pro vaši informaci.
Kód:
Sub ForwardStep () Pro i = 2 až 20 Krok 2 Buňky (i, 1). Hodnota = i Další i End Sub
Pro hodnoty začínající od 2 tato smyčka umožňuje tisknout 2, 4, 6, 8… 20 v následných vynikajících buňkách. Krok 2 výslovně uvedl, že počínaje číslem 2 kód přejde na další číslo v kroku 2 (tj. 4 se vytiskne) atd. Tento proces bude pokračovat, dokud nenastane 20 v buňce. Jakmile se v buňce objeví 20, smyčka bude automaticky ukončena.
Spusťte kód pomocí klávesy F5 nebo ručně. Takže můžete vidět výstup níže.
Typ # 3 - VBA pro smyčku se zpětným krokem
Stejně jako u smyčky s krokem vpřed můžeme použít smyčku s krokem vzad. Co když například nastavíme náš zpětný krok na -2 a spustíme smyčku for for z hodnot 20 na 2?
Uvidíme, jak to funguje.
kód:
Sub BackwardStep () Pro i = 20 až 2 Krok -2 Debug.Print i Next i End Sub
Po spuštění kódu uvidíme výstup v Okamžitém okně. Okno Immediate otevřete stisknutím kláves Ctrl + G kdekoli v Excelu.
Protože jsme v kroku -2 určili počáteční bod smyčky jako 20 a koncový bod 2, smyčka začíná od 20 a v kroku -2 pokračuje na další číslo, které je -18 atd. Jakmile smyčka dosáhne hodnoty 2, automaticky se ukončí a poslední hodnota se vytiskne jako 2.
Typ # 4 - VBA vnořený pro smyčku
Můžeme také vnořit smyčku TheFor. Není však doporučováno provádět vnoření stejné smyčky více než třikrát v kódu (lze to považovat za chybu v logice).
Viz níže uvedený kód pro vnořené smyčky.
Kód:
Sub NestedFor () Pro i = 1 až 10 Pro j = 1 až 2 Buňky (i, j). Hodnota = i * j Další j Další i Konec Sub
V tomto příkladu při i = 1 a j = 1 makro vloží hodnotu i * j (1 * 1) do průsečíku řádku i = 1 a sloupce j = 1 (tj. Buňka A1) a jde o další hodnotu j (2) udržení i = 1. Do průniku řádku i = 1 a sloupce j = 2 (tj. buňka B1) makro vloží hodnotu I * j (1 * 2). Smyčka ignoruje další hodnotu j, protože j se mění pouze od 1 do 2 a přejde na další hodnotu i.
Pro i = 2 a j = 1 makro vloží hodnotu i * j (2 * 1) do průsečíku druhého řádku a prvního sloupce (tj. Buňky A2) a pokračuje. Až do rozsahu i a j.
Spusťte kód pomocí klávesy F5 nebo ručně, jak je znázorněno na níže uvedeném snímku obrazovky. Takže můžete vidět výstup níže.
Type # 5 - VBA Do while Loop
Cyklus Do while je jednou z nejzajímavějších smyček ve VBA. To vám umožní zkontrolovat stav a zapsat výstup (DO), když je splněna určitá podmínka nebo sada podmínek (nebo podmínka / podmínky je / jsou PRAVDA).
Viz níže uvedený kód:
Kód:
Sub do_whileloop () Dim i As Integer i = 1 Do I když i = 10 buněk (i, 1). Hodnota = i * ii = i + 1 End Loop End Sub
Tato smyčka funguje takto:
Pro hodnoty i od 1 (původně i = 1) do 10 vypočítá i * i (tj. Druhou mocninu pro každou celočíselnou hodnotu i) a vloží ji do buňky 1 až 10. Výstupem není nic jiného než druhá mocnina hodnot celých čísel 1 až 10. Pod tímto kódem se blíže podívejte na smyčku . Je nutné jej přidat, jinak bude systém střílet chybu.
Spusťte kód pomocí klávesy F5 nebo ručně. Takže můžete vidět výstup níže.
Toto jsou některé příklady smyčky VBA, o které jsem se v tomto článku pokusil postarat. Doufám, že to bude dost přesné na to, aby se vyjasnily některé pojmy.
Co si pamatovat
- Při použití smyčky s krokem vzad se ujistěte, že vaše počáteční číslo musí být větší než vaše konečné číslo a naopak.
- V části Do while loop se ujistěte, že používáte smyčku, abyste ukončili práci před ukončením celého kódu VBA. V opačném případě vyvolá systém chybu kompilátoru s chybovou zprávou „Do Without Loop“.
Tuto šablonu VBA Loops Excel si můžete stáhnout zde - VBA Loops Excel Template
Doporučené články
Toto byl průvodce Excel VBA smyčky. Zde jsme diskutovali typy smyček Excel VBA a jejich použití spolu s několika praktickými příklady a šablonou Excel ke stažení. Můžete také projít naše další doporučené články -
- Funkce VBA v Excelu
- Funkce VBA VLOOKUP
- Klávesové zkratky Excel
- Excel Percentile Formula