VBA – 4# Lekce – Podmínky IF

V této lekci se podíváme na větvení programu pomoci podmínek IF (do češtiny přeloženo KDYŽ). Podmínky jsou nedílnou součástí každého programu pomáhají nám ošetřovat různé možnosti na základě podmínek. Pomocí těchto příkazu jsme potom schopni větvit program v závislosti na vstupních okolnostech.

Obecná syntaxe podmínky

Syntaxe podmínek if vypadá takto.

IF podmínka Then

Blok příkazů VBA

ElseIf

Blok příkazů

End If

Tento příklad ukazuje jenom samostatný blok podmínek a po zkopírování vám nebude fungovat. Kompletní příklady si ukážeme později v této lekci.

If volba = "a" Then
MsgBox "ahoj", vbOKOnly + vbInformation, "Zpráva" 
ElseIf volba = "b" Then MsgBox "nazdar", vbOKOnly + vbInformation, "Zpráva"
Else MsgBox "končím program", vbOKOnly + vbInformation, "Zpráva"
end
End If

Teď si tento kód rozebereme : První řádek by se dal přečíst takto. Pokud (if)  jakákoliv proměnná ( volba) se rovná ( = )  “a“  potom vykonej (then). Pokud tato podmínka nenastane program přeskočí řádky pod ní a zastaví se u řádku elseif . Elseif je obdoba if ale v podmínce ho můžeme využít kolikrát chceme kdežto if se dává jenom na začátek dané podmínky. Z toho vyplývá že třetí řádek se čte úplně stejně jako první. Else značí něco jako „cokoliv jiného“. Takže pokud se volba bude rovnat cokoliv jiného než „a“ nebo „b“ program vykoná řádky pod else. V Tomto případe vykoná příkaz end, který ukončí celý program. Podmínky nemusí vždy obsahovat else nebo elseif. Každý podmínkový blok ale musí být ukončen řádkem End If. A teď již pár slibovaných kompletních příkladů na procvičení podmínek.

Příklady


Sub cisla()
Dim Cislo As Double
Dim Vysledek As String
Cislo = InputBox("zadej číslo")

If Cislo > 0 Then
        Vysledek = "kadné"
    ElseIf Cislo < 0 Then
        Vysledek = "záporné"
    Else  Vysledek = "nula"
End If
MsgBox "Číslo je " + Vysledek
End Sub

Sub porovnání()
Dim a As Double
Dim b As String
a = InputBox("zadej číslo a")
b = InputBox("zadej číslo b")

If a > b Then
      Vysledek = "a je vetší než b"
   ElseIf b > a Then
      Vysledek = "b je vetší než a"
   Else Vysledek = "a = b"
End If

MsgBox Vysledek
End Sub

U tohoto příkladu je v podmínce použitý textový řetězec proto podmínka vypadá if heslo=“vba“(každý textový řetězec se ohraničuje uvozovkami) kdyby to nebylo v uvozovkách program by to bral jako proměnnou. Zkuste si dát zadat do inputboxu textový řetězec vba a potom cokoliv jiného.


Sub heslo()
Dim heslo As String
heslo = InputBox("zadej heslo")
If heslo = "vba" Then
        MsgBox "Zobrazení přísně tajné zrávy :D", vbOKOnly + vbInformation, "TOP sectret"
    Else
        MsgBox "spatně zadané heslo", vbOKOnly + vbInformation, "Smůla"
End If
End Sub

Toto je jenom obdoba předešlého příkladu. Chybí zde příkaz else. Sami se podívejte na rozdíl mezi oběma příklady


Sub heslo_update()
Dim heslo As String
heslo = InputBox("zadej heslo")
If heslo = "vba" Then
        MsgBox "Zobrazení přísně tajné zrávy :D", vbOKOnly + vbInformation, "TOP sectret"
End If
End Sub

Závěr

Tím naše lekce končí podmínky jsou velmi důležitou součástí programování takže jestli něčemu nerozumíte klidně se ptejte v komentářích pod článkem. V příští lekci se podíváme na další možnosti dělení programu pomocí příkazu Select Case.