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 -

  1. Funkce VBA v Excelu
  2. Funkce VBA VLOOKUP
  3. Klávesové zkratky Excel
  4. Excel Percentile Formula

Kategorie: