zpět na výpis    domů » excel » Větvení kódu If ... Else ... End If ve VBA

Větvení kódu If ... Else ... End If ve VBA

Publikováno: 7.6.2017

Větvení kódu If ... Else ... End If ve VBA

Větvení kódu pomocí bloku If ... Else ... End If se používá v případech, kdy se má vykonat příkaz nebo skupina příkazů při splnění stanovené podmínky či naopak. Větvení kódu odpovídá excelovské funkce KDYŽ() s anglickým ekvivalentem funkce IF().

Blok If ... Else ... End if

Jestliže je podmínka vyhodnocena jako PRAVDA (TRUE), pak se vykoná příkaz nebo množina příkazů, které následují ihned za podmínkou. Je-li podmínka vyhodnocena jako NEPRAVDA (FALSE), pak se vykoná příkaz nebo množina příkazů v druhé části kódu.

Option Explicit

Sub podminka()

If podmínka Then
  příkazy TRUE
Else
  příkazy FALSE
End If

End Sub

Chcete-li do kódu zahrnout druhou podmínku, pak se zápis kódu mění na If ... ElseIf ... Else ... End If. Příkazy skupiny FALSE jsou vykonány v případě, že obě podmínky nejsou splněny.

Option Explicit

Sub podminky()

If podmínka_1 Then
  příkazy TRUE #1
ElseIf podmínka_2
  příkazy TRUE #2
Else
  příkazy FALSE
End If

End Sub

Analogickým způsobem by se do kódu přidaly další podmínky.

Příklad #1

Následující kód vyhodnotí, která z hodnot A a B je větší, pričemž uživatel sám vloží čísla do proměnných pomocí funkce InputBox(). Jestliže je větší hodnota A, pak je pomocí příkazu Msgbox vypsána hláška "A je větší než B". Jsou-li čísla shodná bude vypsána hláška "A je rovno B". Jinak procedura vrátí hlášku "B je větší než A".

Option Explicit

Sub Test_hodnot()

deklarace číselných proměnných
Dim A As Long, B As Long

vložení hodnot do proměnných A a B
A = InputBox("Zadej první číslo", "Porovnání hodnot")
B = InputBox("Zadej druhé číslo", "Porovnání hodnot")

porovnání vložených hodnot
If A > B Then
  MsgBox("A je větší než B")
ElseIf A = B Then
  MsgBox("A je rovno B")
Else
  MsgBox("B je větší než A")
End If

End Sub

Příklad #2

Další procedura vyhodnotí, zda je buňka A1 prázdná či nikoliv. Na vybranou buňku je odkazováno pomocí vlastnosti Selection. Procedura vypíše do dialogového okna hlášku o výsledku testu. Test je vyhodnocen pomocí funkce IsEmpty(), která vrací TRUE nebo FALSE.

Option Explicit

Sub Test_bunky_1()

výběr buňky A1
Range("A1").Select

If IsEmpty(Selection) Then
  MsgBox ("Buňka A1 je prázdná")
Else
  MsgBox("Buňka A1 není prázdná")
End if

End Sub

Kontrukce If ... Else ... End if ve VBA

Příklad #3

Poslední příklad je velmi podobný předchozímu. Procedura otestuje, zda je v buňce A1 číselná hodnota či nikoliv a do buňky B1 vypíše výsledek testu.

K testu použiji logickou funkci IsNumeric(), která vrací TRUE nebo FALSE. K posunu kurzoru do buňky B1 použiji funkci Offset(), která v češtině odpovídá excelovské funkci POSUN().

Option Explicit

Sub Test_bunky_2()

Dim i As Byte

For i = 1 to 10

výběr buňky A1
Cells(i, 1).Select

If Len(Selection) <> 0 Then
  je-li hodnota v buňce nenulové délky (TRUE), pak zjisti, zda je hodnota v buňce číslo či nikoliv
  If IsNumeric(Selection) Then
      If Selection > 0 Then
        Selection.Offset(, 1).Value = "číslo je větší než nula"
      ElseIf Selection = 0 Then
        Selection.Offset(, 1).Value = "číslo je rovno nule"
      Else
        Selection.Offset(, 1).Value = "Číslo je menší než nula"
      End If
  Else
    Selection.Offset(, 1).Value = "Hodnota v buňce není číslo"
  End If
Else
  je-li hodnota v buňce nulové délky (FALSE), pak je buňka prázdná
  Selection.Offset(, 1).Value = "Buňka je prázdná"
End If

Next i

přizpůsobení šířky sloupce obsahu
Columns(2).AutoFit

End Sub

Kontrukce If ... Else ... End if ve VBA

Líbil se vám článek? A chcete se vědět o každém dalším?

Sledujte:

Nahoru