Ak píšete program VBA a chcete vykonať rovnakú úlohu viackrát, môžete to urobiť pomocou slučky VBA pre slučky. VBA je sekvenčný programovací jazyk. Každý riadok kódu sa spustí zhora nadol, kým nie sú k dispozícii ďalšie riadky kódu na čítanie. Ak sa chcete vrátiť a vykonať úlohu, musíte to vynútiť pomocou kódu makra. Výsledky získate pomocou slučky.
For Loop vo VBA je jedným z najbežnejších typov slučiek. Slučka For má dve formy: For Next a For each In Next. Slučka For sa zvyčajne používa na postupný pohyb v zozname položiek alebo čísel. Na ukončenie slučky For v ľubovoľnom danom bode môžeme použiť príkaz exit. Loop sa bude otáčať stále dokola, kým nesplní koncovú podmienku. Akonáhle je splnená koncová podmienka, tok programovania bude pokračovať nadol, vo svojom prirodzenom smere.
Cyklus For… Next má nasledujúcu syntax: For counter = start_counter To end_counter 'Do some something here (your code) Next counter
V skutočnosti vytvárame slučku, ktorá používa premenné počítadlo ako „strážca času“ slučky. Nastavíme ho na hodnotu rovnajúcu sa start_counter na začiatku cyklu a potom ho zvyšujte o 1 počas každej slučky, kým nespĺňa koncovú podmienku. Smyčka sa spustí dovtedy, kým hodnota nebude počítadlo stáva sa rovným end_counter. Smyčka sa spustí naposledy, keď sa obe vyššie uvedené hodnoty zhodujú, a potom sa slučka zastaví.
Všetky vyššie uvedené môžu byť pre niektorých ľudí mätúce, takže sa poďme pripraviť a začať sa učiť For Loop v Exceli s niekoľkými príkladmi.
- Vytvorte nový zošit programu Excel a potom ho uložte s príponou .xlsm
- Na spustenie obrazovky editora Visual Basic použite ALT + F11
- Vložte nový modul
- Skopírujte nižšie uvedený kód do štandardného modulu VB
Smyčka 1 (číslo sa zobrazuje s msgboxom)
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
Vysvetlenie kódu:
- Kód VBA vyžaduje, aby ste priradili hodnotu StartNumber, kde EndNumber sú premenné, ktoré sú deklarované ako celé čísla ako počiatočný bod vašej slučky
- Tieto hodnoty môžu byť ľubovoľné číslo a koncové číslo máme 5
- StartNumber sa začína od 1
- Pre počiatočné číslo = 1 do koncového čísla znamená, že kód začne od 1 (počiatočné číslo) do 5 (koncové číslo)
- MsgBox StartNumber & "is" & "Your StartNumber" zobrazí nasledujúce okno so správou
Loop2 (hodnoty výplne)
Pod Loop2 () „Vyplní bunky A1: A56 hodnotami X cyklovaním“ --- Komentár „Zvýšenie hodnoty X o 1 v každej slučke“ --- Komentár Dim X ako celé číslo pre X = 1 až 56 rozsah („A "& X) .Hodnota = X Ďalší X Koniec podč
Vysvetlenie kódu:
- Priradili sme X ako celé číslo
- Pre X = 1 až 56; toto začne od 1 a pokračuje do 56 s prírastkom 1 vždy
- Rozsah ("A" & X). Hodnota = X; tento riadok uloží hodnotu X a prejde do rozsahu A1 až A56
Loop3 (Vyplňte bunky farbou pozadia)
Sub Loop3 () „Vyplní bunky B1: B56 56 farbami pozadia“ --- Komentár Dim X ako celé číslo pre rozsah X = 1 až 56 („B“ & X). Vyberte pomocou výberu. Interiér .ColorIndex = X. Vzor = xlTuhý koniec s ďalším X End Sub
Vysvetlenie kódu:
- Priradili sme X ako celé číslo
- Pre X = 1 až 56 sa začína na 1 a pokračuje sa do 56 s prírastkom 1 vždy
- Rozsah („B“ a X). Vyberte; tento riadok uloží hodnotu X a vyberie bunku B1 až B56
- Nasledujúce 4 riadky, tj. S výberom. Interiér, vyberie vnútorný index farieb a z X zoberie hodnotu tohto indexu farieb tak, že 1 patrí čiernej farbe; 2 patrí k bielej farbe; 3 pre červenú a tak ďalej
Smyčka 4 (Vyplňte hodnoty s prírastkom 2)
Hodnota kroku je predvolene dopredu 1, je však možné ju nastaviť aj na číslo viac ako 1.
Sub Loop4 () 'Vyplní každú druhú bunku od C1: C50 hodnotami X' --- Komentár Dim X ako celé číslo pre X = 1 až 50 Rozsah 2 kroku ("C" & X). Hodnota = X Ďalší X Koniec Sub
Vysvetlenie kódu:
- Priradili sme X ako celé číslo
- Pre X = 1 až 50, krok 2; toto začne od 1 do X do 50 s prírastkom 2 vždy
- Rozsah ("C" & X). Hodnota = X; tento riadok uloží hodnotu X a prejde do rozsahu C1 až C50
Smyčka 5 (VBA pre slučku v opačnom poradí s pokynom KROK)
Nie je nutné, aby sa počítadlo v slučke For pohybovalo iba od nízkych k vyšším hodnotám; namiesto toho môže slučka For bežať dozadu, tj. od vysokých k nižším hodnotám.
Aj keď je hodnota kroku v predvolenom nastavení vpred 1, je možné ju nastaviť na číslo v opačnom poradí.
Pod Loop5 () „Vyplní bunky z D1: D50 hodnotami X“ --- Komentár „V tomto prípade sa X zníži o 1“ --- Komentár Dim X ako celé číslo, riadok ako celé číslo riadok = 1 pre X = 50 až 0 Krok -1 Rozsah („D“ a riadok). Hodnota = X riadok = riadok + 1 ďalší X koncový podrad
Vysvetlenie kódu:
- Priradili sme X & Row ako celé číslo
- Riadok obsahuje hodnotu 1
- Pre X = 50 až 0 krok -1; začne to od 50 so znížením o 1 na X do 0
- Rozsah („D“ a riadok). Hodnota = X; tento riadok uloží hodnotu X a prejde do rozsahu D1 až D50
Smyčka 6 (Vyplní každú druhú bunku opačne krokom KROK-2)
Vo vyššie uvedenom príklade slučky For môžeme použiť krok a poradie, aby sme zistili, či slučka For funguje v smere dopredu alebo dozadu.
Sub Loop6 () 'Vyplní každú druhú bunku z E1: E100 hodnotami X' --- Komentár 'V tomto prípade sa X zníži o 2' --- Komentár Dim X ako celé číslo, riadok ako celé číslo riadok = 1 pre X = 100 Do 0 Krok -2 Rozsah („E“ a riadok). Hodnota = X riadok = riadok + 2 nasledujúci X koniec podč
Vysvetlenie kódu:
- Priradili sme X & Row ako celé číslo
- Riadok obsahuje hodnotu 1
- Pre X = 100 až 0 krok -2; toto začne od 100 so znížením o 2 na X do 0
- Rozsah („E“ a riadok). Hodnota = X; tento riadok uloží hodnotu X a prejde do rozsahu E1 až E100
Smyčka 7 (Pre slučku s podmienkou IF: Vypĺňa bunky začínajúc od konkrétnej bunky)
Bunky z bunky F11 sa tak naplnia hodnotou 11, až kým X nesplní podmienku IF
Sub Loop7 () 'Začína vypĺňať bunky F11: F100 hodnotami X' --- Komentár 'Toto opustí cyklus po 50' --- Komentár Dim X ako celé číslo pre X = 11 až 100 rozsah ("F" & X). Hodnota = X, ak X = 50, potom MsgBox („Bye Bye“) Ukončí na konci, ak bude ďalší X End Sub
Vysvetlenie kódu:
- Priradili sme X ako celé číslo
- Pre X = 11 až 100; sa začne od 11 s prírastkom 1 v X, kým podmienka nesplní
- Rozsah ("F" & X). Hodnota = X; tento riadok uloží hodnotu X a prejde do rozsahu F11, kým podmienka nesplní
- Po zadaní hodnoty 50 do bunky F50 sa zobrazí nasledujúce okno so správou
Záver: S vyššie uvedenými 7 príkladmi môžeme použiť slučku For v našej pravidelnej alebo akejkoľvek automatizačnej časti.
Ak sa vám páčili naše blogy, zdieľajte ich so svojimi priateľmi na Facebooku. A tiež nás môžete sledovať na Twitteri a Facebooku.
Radi by sme vás počuli, dajte nám vedieť, ako môžeme zlepšiť, doplniť alebo inovovať našu prácu a zlepšiť ju pre vás. Napíšte nám na emailovú stránku