Pokud píšete program VBA a chcete provést stejný úkol vícekrát, můžete to udělat pomocí smyček VBA. VBA je sekvenční programovací jazyk. Každý řádek kódu bude spuštěn shora dolů, dokud nebudou k dispozici další řádky kódu ke čtení. Pokud se chcete vrátit a provést úkol, musíte vynutit použití kódu makra. Výsledky získáte pomocí smyčky.
For Loop ve VBA je jedním z nejběžnějších typů smyček. Smyčka For má dvě formy: For Next a For Each In Next. Smyčka For se obvykle používá k postupnému pohybu v seznamu položek nebo čísel. K ukončení smyčky For v kterémkoli daném bodě můžeme použít příkaz exit. Pro Loop se bude točit dokola, dokud nesplní podmínku konce. Jakmile je splněna koncová podmínka, tok programování bude pokračovat směrem dolů, ve svém přirozeném směru.
Smyčka For… Next má následující syntaxi: For counter = start_counter To end_counter 'Do something here (your code) Next counter
Ve skutečnosti vytváříme smyčku, která používá proměnnou čelit jako „strážce času“ smyčky. Nastavili jsme ji na hodnotu rovnou start_counter na začátku smyčky a poté ji zvyšujte o 1 během každé smyčky, dokud nesplní podmínku konce. Smyčka se spustí, dokud hodnota nebude čelit se stává rovným end_counter. Smyčka se spustí naposledy, když se obě výše uvedené hodnoty shodují, a poté se smyčka zastaví.
Všechno výše uvedené může být pro některé lidi matoucí, takže se pojďme připravit a začít se učit For Loop v Excelu s několika příklady.
- Vytvořte nový excelový sešit a poté jej uložte s příponou .xlsm
- Chcete -li spustit obrazovku editoru jazyka Visual Basic, použijte ALT + F11
- Vložte nový modul
- Zkopírujte níže uvedený kód do standardního modulu VB
Smyčka 1 (zobrazení čísla s msgbox)
Sub Loop1 () Dim StartNumber as Integer Dim EndNumber As Integer EndNumber = 5 For StartNumber = 1 To EndNumber MsgBox StartNumber & "is" & "Your StartNumber" Next StartNumber End Sub
Vysvětlení kódu:
- Kód VBA potřebuje, abyste přiřadili hodnotu StartNumber, kde EndNumber jsou proměnné, které jsou deklarovány jako celá čísla jako výchozí bod pro vaši smyčku
- Tyto hodnoty mohou být libovolné číslo a máme koncové číslo jako 5
- StartNumber je spuštěno od 1
- Pro StartNumber = 1 To EndNumber znamená, že kód začíná od 1 (StartNumber) do 5 (EndNumber)
- MsgBox StartNumber & "is" & "Your StartNumber" zobrazí následující okno se zprávou
Loop2 (hodnoty výplně)
Dílčí smyčka 2 () 'Vyplňuje buňky A1: A56 hodnotami X smyčkou' --- Komentář 'Zvýšení hodnoty X o 1 v každé smyčce' --- Komentář Dim X jako celé číslo pro X = 1 až 56 rozsah ("A "& X) .Hodnota = X Další X End Sub
Vysvětlení kódu:
- Přiřadili jsme X jako celé číslo
- Pro X = 1 až 56; to začne od 1 a pokračuje až do 56 s přírůstkem 1 pokaždé
- Rozsah ("A" & X). Hodnota = X; tento řádek uloží hodnotu X a přejde do rozsahu A1 až A56
Loop3 (Vyplňte buňky barvou pozadí)
Dílčí smyčka3 () „Vyplňuje buňky B1: B56 56 barvami pozadí“ --- Komentář Dim X jako celé číslo pro rozsah X = 1 až 56 („B“ & X). Vyberte s výběrem. Interiér .ColorIndex = X. Vzor = xl Pevný konec s dalším X End Sub
Vysvětlení kódu:
- Přiřadili jsme X jako celé číslo
- Pro X = 1 až 56 začne s 1 a pokračuje až do 56 s přírůstkem 1 pokaždé
- Rozsah („B“ a X). Vyberte; tento řádek uloží hodnotu X a vybere buňku B1 až B56
- Další 4 řádky, tj. With Selection.Interior, vyberou colorindex interiéru a vezmou hodnotu z X tohoto colorindexu tak, že 1 patří černé barvě; 2 patří k bílé barvě; 3 pro červenou a tak dále
Smyčka 4 (Vyplňte hodnoty s přírůstkem 2)
Ve výchozím nastavení je hodnota kroku vpřed 1, lze ji však nastavit na číslo větší než 1.
Sub Loop4 () 'Vyplní každou druhou buňku od C1: C50 hodnotami X' --- Komentář Dim X jako celé číslo pro X = 1 až 50 Rozsah 2 kroku ("C" & X). Hodnota = X Další X End Sub
Vysvětlení kódu:
- Přiřadili jsme X jako celé číslo
- Pro X = 1 až 50 Krok 2; toto začne od 1 do X do 50 s přírůstkem vždy 2
- Rozsah ("C" & X). Hodnota = X; tento řádek uloží hodnotu X a přejde do rozsahu C1 až C50
Smyčka 5 (VBA pro smyčku v opačném směru s instrukcí STEP)
Není nutné, aby se čítač ve smyčce For pohyboval pouze od nízkých k vyšším hodnotám; místo toho může smyčka For běžet dozadu, tj. od vysokých k nižším hodnotám.
Přestože je hodnota kroku ve výchozím nastavení dopředná 1, lze ji nastavit na číslo v opačném pořadí.
Dílčí smyčka 5 () 'Vyplní buňky z D1: D50 hodnotami X' --- Komentář 'V tomto případě se X sníží o 1' --- Komentář Dim X jako celé číslo, řádek jako celé číslo řádek = 1 pro X = 50 až 0 Krok -1 Rozsah („D“ a řádek). Hodnota = X řádek = řádek + 1 Další X Konec Sub
Vysvětlení kódu:
- Přiřadili jsme X & Row jako celé číslo
- Řádek obsahuje hodnotu 1
- Pro X = 50 až 0 Krok -1; to začne od 50 se snížením o 1 v X do 0
- Rozsah („D“ a řádek) .Hodnota = X; tento řádek uloží hodnotu X a přejde do rozsahu D1 až D50
Smyčka 6 (Vyplní každou druhou buňku v opačném směru s KROKEM-2)
Ve výše uvedeném příkladu smyčky For můžeme použít krok a pořadí, abychom zjistili, zda smyčka For funguje ve směru dopředu nebo dozadu.
Dílčí smyčka 6 () 'Vyplní každou druhou buňku z E1: E100 hodnotami X' --- Komentář 'V tomto případě se X zmenší o 2' --- Komentář Dim X jako celé číslo, řádek jako celočíselný řádek = 1 pro X = 100 Do 0 Krok -2 Rozsah („E“ a řádek). Hodnota = X řádek = řádek + 2 Další X Konec Sub
Vysvětlení kódu:
- Přiřadili jsme X & Row jako celé číslo
- Řádek obsahuje hodnotu 1
- Pro X = 100 až 0 Krok -2; to začne od 100 se snížením o 2 v X do 0
- Rozsah („E“ a řádek) .Hodnota = X; tento řádek uloží hodnotu X a přejde do rozsahu E1 až E100
Smyčka 7 (Pro smyčku s podmínkou IF: Vyplní buňky počínaje konkrétní buňkou)
Tím se buňky z buňky F11 zaplní hodnotou 11, dokud X nesplní podmínku IF
Dílčí smyčka 7 () 'Začne vyplňovat buňky F11: F100 s hodnotami X' --- Komentář 'Toto opustí smyčku po 50' --- Komentář Dim X jako celé číslo pro X = 11 až 100 rozsah ("F" & X) .Hodnota = X Pokud X = 50, pak MsgBox („Bye Bye“) Exit For End If Next X End Sub
Vysvětlení kódu:
- Přiřadili jsme X jako celé číslo
- Pro X = 11 až 100; začne od 11 s přírůstkem po 1 v X, dokud podmínka nesplní
- Rozsah ("F" & X). Hodnota = X; tento řádek uloží hodnotu X a přejde do rozsahu F11, dokud podmínka nesplní
- Po zadání hodnoty 50 do buňky F50 se zobrazí následující okno se zprávou
Závěr: S výše uvedenými 7 příklady můžeme For smyčku použít v naší běžné nebo jakékoli automatizační části.
Pokud se vám naše blogy líbily, sdílejte je se svými přáteli na Facebooku. A také nás můžete sledovat na Twitteru a Facebooku.
Rádi bychom od vás slyšeli, dejte nám vědět, jak můžeme zlepšit, doplnit nebo inovovat naši práci a zlepšit ji pro vás. Napište nám na e -mail