Funkcia IIf
V niektorých prípadoch je nepraktické písať podmienky If-Else alebo Select-Case. Ak máme jednú podmienku, ale len odpovede typu ak jedno platí, inak druhé platí, tak je možné použiť funkciu IIf.
Syntax funkcie IIf:
lubovolnaPremenna = IIf (Podmienka, Ak je výraz pravdivý, Ak výraz nie je pravdivý)
Narozdiel od konštrukcie If-Else alebo Select-Case funkcia IIf vracia hodnotu.
1. príklad: Využitie funkcie IIf.
Sub Example REM začiatok procedúry vek = InputBox("Zadajte svoj vek!") REM vstup od užívateľa Dim boolValue As Boolean REM deklarácie premenných Dim retazec As String REM použitie funkcie IIf a priradenie výsledku do reťazca retazec = IIf(CInt(vek) > 17, "V poriadku! Máš prístup k videám prístupné od 18 rokov", "Nemaš 18 rokov! A tak ti zamietam prístup k videám prístupné od 18 rokov!") MsgBox retazec REM výpis reťazca End Sub REM koniec procedúry
Vstup od užívateľa
Výsledok
Rozbor makra: Po spustení makra užívateľ zadá svoj vek. Následne využijeme funkciu IIf a rozhodneme, či vek je vhodný pre videa vhodné od 18 rokov. Prvý argument funkcie IIf je podmienka. Druhý argument sa vykoná vtedy, ak je podmienka pravdivá. Ak je podmienka nepravdivá, vykoná sa tretí argument. Následne funkcia po vyhodnotení podmienky vráti jednú z týchto argumentov. Funkcia IIf vráti v našom prípade reťazec a odovzdá ho premennej retazec,ktorá sa vypíše na obrazovku.
Funkcia Choose
Funkcia Choose pracuje s listom. List je zoznam a podobá sa na pole. Ale narozdiel od poľa má iné indexovanie prvkov a vieme bez problémov jednotlivé položky zoznamu pridávať a mazať.
Funkcia Choose nám umožní rýchly prístup k jednotlivým prvkom zoznamu a vykonávať ďalšie operácie. Avšak, list v Choose je využitý pre príkazy alebo premenné a nie ako samostatný list, ktorý si žije svojím „životom“. Choose sa napadne podobá konštrukcie podmienok Select-Case a je to tak. Choose je takou alternatívou k podmienkam, avšak s mierne odlišnou filozofiou použitia.
Syntax funkcie Choose:
object = Choose(číslo indexu, Select s indexom 1, Select s indexom 2, Select s indexom 3,…,...)
Funkcia Choose vracia 0, ak číslo indexu je menšie ako 1. Inak funkcia Choose vráti Select s definovaným indexom.
2. príklad: Využitie funkcie Choose
Sub Example Dim i As Integer REM deklarácie premennách Dim retazec As String Dim a As Integer Dim b As Integer a = InputBox("Zadaj prvé číslo!") REM vstupy od užívateľov b = InputBox("Zadaj druhé číslo!") For i = 1 To 4 REM cyklus retazec = retazec & Choose(i, Scitanie(a,b), Odcitanie(a,b), Nasobenie(a,b), Delenie(a,b)) & Chr(10) Next MsgBox retazec End Sub REM definovanie funkcii Function Scitanie(a, b) As String Dim vysledok As Integer vysledok = a + b Scitanie = "Vysledok sčitania čísla: " & a & " a " & b & " je: " & vysledok End Function Function Odcitanie(a, b) As String Dim vysledok As Integer vysledok = a – b Odcitanie = "Vysledok odcitania čísla: " & a & " a " & b & " je: " & vysledok End Function Function Nasobenie(a, b) As String Dim vysledok As Integer vysledok = a * b Nasobenie = "Vysledok násobenia čísla: " & a & " a " & b & " je: " & vysledok End Function Function Delenie(a, b) As String Dim vysledok As Integer vysledok = a / b Delenie = "Vysledok delenia čísla: " & a & " a " & b & " je: " & vysledok End Function
Vstup od užívateľa
Vstup od užívateľa
Výsledok
Rozbor makra: Užívateľ zadá dve čísla a následne sa spustí cyklus For. V cykle For sa nachádza i celé logika funkcie Choose. Premenná i je postupné zvyšovaná o hodnotu 1 a určili sme, aby premenná i určovala hodnotu indexu listu funkcie Choose. Táto hodnota indexu rozhodne, ktorá funkcia bude vykonaná. Zvyšok by už by mal byť jasný.