Cykly v makrech
Provádění příkazů v cyklu (smyčce) představuje proces opakování celého
bloku instrukcí v kódu VBA. Počet opakování vždy známe předem, nebo ho určíme
během běhu makra na základě hodnot proměnných.
Nahoru Cyklus For - To - Next
Pro procvičení příkladů této části si postupně otevřeme
soubor ma09_a.xls.
Zápis textu do řady buněk:
Požadujeme vytvořit makro, které do řady 20 buněk pod sebou zapíše
hodnotu, na kterou se dotáže dialog InputBox.
Otevřeme nový soubor a v editoru VBA do něj vložíme nový Modul, do
kterého zapíšeme následující kód makra:
Zeleně jsou v komentáři podrobně popsány jednotlivé
příkazy.
Sub zadejhodnoty()
Dim x
' Dotaz na hodnotu zadávanou do buněk – uloženou do
proměnné y
y = InputBox("Nyní se do dvaceti buněk pod označenou
zapíše následující text:", "For - Next")
' pro proměnnou x od 1 do 20 (cyklus) udělej:
For x = 1 To 20
' do buňky o řádek níž zapiš hodnotu y
ActiveCell.Offset(x, 0). Range("A1"). Value = y
' běž na následující hodnotu x (další v pořadí
cyklu)
Next x
End Sub
Nyní makro „zadejhodnoty“ spustíme:
-
Spustíme makro (stojíme např. v buňce B2) – zobrazí se první
krok:
-
Po potvrzení makro zapíše do buněk B3:B22 zadaný text:
Zápis textu do řady buněk po krocích
Požadujeme vytvořit makro, které do řady 20 buněk pod sebou zapíše
hodnotu, na kterou se dotáže dialog InputBox. Tuto hodnotu zapíše pouze do
každé n-té buňky.
Otevřeme si soubor mk09_a.xls a v editoru VBA do něj vložíme a
zapíšeme následující kód makra:
Zeleně jsou v komentáři podrobně popsány jednotlivé
příkazy.
Sub zadejhodnoty2()
Dim x
' Dtto
y = InputBox("Nyní se do dvaceti buněk pod označenou
zapíše následující text:", "For - Next")
' Dotaz na krok pro vkládání pouze do každé n-té buňky
– uloženou do proměnné z
z = InputBox("Zadej krok pro vkládání do každé n-té
buňky:", "For - Next")
' Dtto
For x = 1 To 20 Step z
' Dtto
ActiveCell.Offset(x, 0). Range("A1"). Value = y
' Dtto
Next x
End Sub
Nyní makro „zadejhodnoty2“ spustíme:
-
Spustíme makro (stojíme např. v buňce D2) – zobrazí se první
krok:
-
Nyní zadáme krok:
-
Po potvrzení nám makro zapíše do buněk B3:B22 (do každé třetí)
zadaný text:
Cyklus přičtení čísla do řady buněk
Požadujeme vytvořit makro, které k řadě 20 buněk pod sebou přičte
hodnotu, na kterou se dotáže dialog InputBox.
Otevřeme soubor mk09_a.xls a v editoru VBA do něj…