Riadenie chodu makra
Predstavte si situáciu, že potrebujete do každej bunky tabuľky zapísať nejaké hodnoty. Tabuľka má povedzme 100 políčok. Klasickou cestou by ste pri tvorbe makra museli pracne zapísať každú akciu s tabuľkou. Len si pomyslíte, koľko príkazov by ste museli zapísať.
Najprv sa musíte presunúť do danej bunky tabuľky, napísať do nej hodnotu a presunúť sa do ďalšej bunky tabuľky. Nemusíte sa báť z toľkej práce. Už pri zrode programovacích jazykov sa dbalo na podporu cyklov a podmienok.
Prikazy If, ElseIf, Else a End If
Všetky príkazy uvedené v názve tejto podkapitoly majú za úlohu vetviť program na základe splnenia/nesplnenia podmienky.
Kedy môžeme použiť podmienky? Všade tam, kde potrebujeme vyhodnotiť nejaký výraz. Napríklad máme porovnanie dvoch čísel: 5>10. Ak platí táto podmienka, choď ďalej v programe, ak nie, tak zobraz chybu a ukončí program. To je slovný popis jednej z možných situácii, ktorú môžete naprogramovať.
Ukážme si zaujímavý príklad, kde si ukážeme podmienky v praxi.
Príklad 1: makro na kontrolu vstupného údaju
Sub KontrolaVstupu REM začiatok procedúry/makra Dim sprava As String REM deklarácia premennej Vstup = InputBox("Zadajte hodnotu", "Hodnotenie vstupu") REM vytvorenie okna, v ktorom zadáme hodnotu Cislo = IsNumeric(Vstup) REM test, či premenná je číselná hodnota Datum = IsDate(Vstup) REM test, či premenná je dátum If Vstup = "" Then REM zisťovanie typu premennej po testovaní sprava = "Nezadaná žiadna hodnota" Elseif Cislo = True Then sprava = "Bola zadaná číselná hodnota" Elseif Datum = True Then sprava = "Bol zadaný dátum" Else sprava = "Bol zadaný text" End If REM výsledok sa vypíše Print sprava REM výpis výsledku End Sub REM koniec procedúry
Výsledok:
Zadanie číselnej hodnoty a stlačenie
tlačítka OK
Výsledok
Popis makra: v makre využijeme funkciu InputBox. Po zobrazení dialógového okna makro čaká na vstupný údaj. Po zadaní údaju klikneme na tlačidlo OK a zadaná premenná bude priradená premennej Vstup. Premennú Vstup testujeme, či je číslo alebo dátum pomocou funkcii IsDate a IsNumeric.
Teraz chceme zobraziť výsledok. Použijeme podmienky If, ElseIf, Else a koniec častí podmienok End If.
Prečo píšeme toľko typov podmienok? Pretože ako vidíme, program najprv otestuje, či vôbec je nejaká premenná na vstupe. Ak nie, tak kontroluje ElseIf. Ak funkcia IsDatum zistí, že premenná je dátum alebo IsNumeric, že je číslo, návratová funkcia bude 0, čo je v logickej reči vo Visual Basicu True (pravda). Podľa návrhu makra je posledná podmienka Else, pretože ak všetky doterajšie podmienky boli nesplnené, nastane už len posledná možnosť.
Pri If a ElseIf píšeme podmienky. Pri Else nie. Pretože Else považujeme za východiskovú podmienku, ktorá vždy nastane, ak ostatné nenastali. Takže máme tri stratégie pri používaní podmienok If, Else a ElseIf. End If berieme ako štandardné ukončenie tela podmienok.
1. stratégia: využitie If
If podmienka Then príkaz 1 príkaz 2 … End If
Upozornenie: príkazy za slovíčkom Then sa nepíšu! Musíte sa posunúť o riadok nižšie, inak vám neprejde kontrola makra. Avšak, existuje výnimka, kde to môže napísať jednoriadkovo. Ak ide len o jeden príkaz a bez použitia End If.
Syntax je nasledovná:
If podmienka Then príkaz
2. stratégia: Použitie If a Else
If podmienka Then príkazy … Else príkazy … End If
3. stratégia: Použitie If a ElseIf
If podmienka1 Then príkazy … ElseIf podmienka2 Then príkazy … Else (tento príkaz nie je povinný v tretej stratégii, riaďte sa podľa vášho návrhu makra) príkazy … End If
Viaceré príkazy
Podmienky môžu mať tvár Čislo>133 ale aj tvár Číslo > 133 And Číslo < 222. Taktiež Visual Basic umožňuje vrstviť viacero príkazov.
If podmienka1 Then If podmienka2 Then If podmienka3 Then príkazy … End If End If End If
Príkazy sa uskutočnia až po splnení všetkých podmienok.
Pokračovať v tejto téme budeme nabudúce.