Podmínky & Cykly
Podmínky
Sekce “Podmínky”Definice
Sekce “Definice”Práce s podmínkami je stejná jako u funkce Když v Excelu s jinou syntaxí.
Praktické vysvětlení
Sekce “Praktické vysvětlení”Na konci řádku s „If“ je nutné zazdat slovo „Then“, jinak vyskočí chyba. Pokud není podmínka naplněna, je možné nedělat nic nebo využít argumentu else. Pokud chceme porovnat více než 2 podmínky po sobě, je možné mezi „If“ a „Else“ zadat ještě argument elseif. Pokud má být splněno více podmínek zároveň, používá se mezi podmínky slovo „and“. Pokud je více podmínek zároveň a alespoň jedna z nich má být splněna, je možné použít slovo „or“ mezi podmínkami. Na konci celé podmínky je nutné podmínku na posledním řádku ukončit argumentem end if.
Použití
Sekce “Použití”Podmínka, zdali je hodnota rovna hodnotě v buňce:
If Range(“E1”).value > 2000 then Range(„F1“).value = „vysoká hodnota“ – Vypsaná hodnota do buňky F1, pokud podmínka splněnaEnd if
Vypsat jinou hodnotu, pokud podmínka splněna není:
If Range(“E1”).value > 20000 then Range(„F1“).value = „vysoká hodnota**“ **else **Range(„F1“).value = „nízká hodnota“**End if
Více než pouze 2 podmínky za pomocí elseIf:
If Range(“E1”).value > 90 then **Range(„F1“).value = „známka A“**ElseIf range(„E1“).value > 75 then **Range(„F1“).value = „známka C“**else **Range(„F1“).value = „známka F“**End if
Splnění více podmínek najednou:
If Range(“E1”).value > 20000 and Range(„B1“).value = „Praha“ then **Range(„F1“).value = „Splněné obě podmínky“**End if
Splnění alespoň jedné podmínky z více podmínek
If Range(“A1”).value > 20000 or Range(„B1“).value = „Praha“ then **Range(„C1“).value = „Splněna alespoň 1 podmínka“**End if
Cykly
Sekce “Cykly”Definice
Sekce “Definice”Slouží k opakování části kódu. Ve VBA jsou 4 hlavní druhy cyklů:
- For
- For Each
- Do while
- Do until
Ve všech cyklech se používá iterátor, který je podobný proměnné, ale jeho hodnota se mění obvykle v každém cyklu kódu.
For
Sekce “For”Používá se pro opakování určitého bloku kódu počet-krát. Cyklus je ukončen argumentem „next“ a názvem iterátoru. Hodnota iterátoru se automaticky zvyšuje o 1, nicméně lze nastavit jiný krok čísel pro zvýšení.
Syntaxe
For iterátor to hodnota [krok] [blok kódu] next iterátor
Krok je volitelným argumentem v případě, kdy je potřebné zvyšovat o jinou hodnotu než 1.
Použití
Vypsání čísel do sloupce „A“ od řádku 1 po řádek 10 díky iterátoru:
For i = 1 to 10 Cells(i, 1).value = i next i
Zvýšení hodnoty o 2:
For i = 1 to 10 step 2 Cells(i, 1).value = i next i
Opačný cyklus od vyššího čísla po nižší:
For i = 10 to 1 step -1 Cells(i, 1).value = i next i
For each
Sekce “For each”Používán pro iteraci přes prvky v kolekci (pole, seznamy, listy atd.).
Syntaxe
For Each iterátor In oblast [daný kód] Next iterátor
Použití
oblast = Array(1, 2, 3, 4, 5) – oblast v proměnné
For Each item In oblast Debug.Print item****Next item
Do while
Sekce “Do while”Cyklus probíhá, dokud je splněna určitá podmínka. Cyklus se používá v případě, kdy není předem znám počet opakování a tak cyklus probíhá pro všechny prvky oblasti. Pokud se má zvyšovat číslo určité proměnné, je nutné tuto proměnné zvyšovat uvnitř cyklu, jelikož není automaticky zvyšována jako iterátor u cyklu „for“.
Syntaxe
Do While proměnná operátor hodnota [blok kódu] loop
Použití
Zvyšování proměnné „counter“ do doby, než je rovna 10:
counter = 1 – Nastavení proměnné mimo cyklus
Do While counter <= 10 Debug.Print counter – Vypsání hodnoty v proměnné do Inmediate okna counter = counter + 1 – Zvýšení proměnné uvnitř cyklu o 1.** Loop**
Do until
Sekce “Do until”Cyklus probíhá, dokud není splněna určitá podmínka. Cyklus se používá v případě, kdy není předem znám počet opakování a tak cyklus probíhá pro všechny prvky oblasti. Pokud se má zvyšovat číslo určité proměnné, je nutné tuto proměnné zvyšovat uvnitř cyklu, jelikož není automaticky zvyšována jako iterátor u cyklu „for“.
Syntaxe
Do Until proměnná operátor hodnota [blok kódu] loop
Použití
Dokud nebude splněna podmínka, že proměnná counter bude větší než 10, tak bude kód probíhat:
counter = 1 – Nastavení proměnné mimo cyklus
Do Until counter > 10 Debug.Print counter – Vypsání hodnoty v proměnné do Inmediate okna counter = counter + 1 – Zvýšení proměnné uvnitř cyklu o 1.** Loop**
© 2026 Excelland
