Přeskočit na obsah

Podmínky & CyklyVBA

Práce s podmínkami je stejná jako u funkce Když v Excelu s jinou syntaxí.

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.

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

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.

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

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

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**

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