Volanie Call
Jednou z možností, ako môžete volať procedúry, funkcie či triedy je pomocou slova Call.
1. príklad: Využitie príkazu Call pri dvoch procedúrach
Sub TestSub(cislo, cislo1) MsgBox "Vysledok scitania: " & cislo+cislo1 & Chr(10) & "Vysledok odcitania: " & cislo-cislo1 & Chr(10) & "Vysledok nasobenia: " & cislo*cislo1 & Chr(10) & "Vysledok delenia: " & cislo/cislo1 End Sub Sub macro Dim m As Integer Dim n As Integer m = InputBox("Zadajte prve cele cislo") n = InputBox("Zadajte druhe cele cislo") Call TestSub(m, n) REM voláme procedúru End Sub
Rozbor makra: Makro je jednoduché na pochopenie. Procedúru voláme pomocou funkcie Call.
Skúsme teraz miesto procedúry využiť funkciu? Bude výsledok iný?
2. príklad: Voláme funkciu pomocou Call
Function TestFunction(cislo, cislo1) MsgBox "Vysledok scitania: " & cislo+cislo1 & Chr(10) & "Vysledok odcitania: " & cislo-cislo1 & Chr(10) & "Vysledok nasobenia: " & cislo*cislo1 & Chr(10) & "Vysledok delenia: " & cislo/cislo1 End Function Sub macro Dim m As Integer Dim n As Integer m = InputBox("Zadajte prve cele cislo") n = InputBox("Zadajte druhe cele cislo") Call TestFunction(m, n) REM voláme funkciu End Sub
Rozbor makra: Rovnaký výsledok ako v prvom príklade. Všetko funguje ako má.
Swap
Swap v počítačovej terminológii znamená, výmena hodnôt medzi dvoma prvkami. Aspoň takto by som to v jednoduchostí definoval. Aj vo Visual Basicu môžeme využívať tieto fintíčky.
Pre názornosť je lepšie ukázať jednoduchý príklad. Následne by som vám chcel ukázať ďalšie príklady so swapom.
3. príklad: Jednoduchý príklad so swapom
Sub swap Dim a As Integer Dim b As Integer Dim pomocnaPremenna As Integer a = InputBox("Zadajte prve cele cislo") b = InputBox("Zadajte druhe cele cislo") pomocnaPremenna = a REM swap a = b b = pomocnaPremenna MsgBox "Po vykonani swapu: a = " & a & ", b = " & b End Sub
Rozbor makra: Vtip swapu je v tom, že si vytvoríme tretiu premennú. Volajme ju pomocná premenná. V nej uložíme hodnotu z prvej premennej. Potom prvá premenná získa hodnotu z druhej premennej. A na koniec, druhá premenná získa uloženú hodnotu z pomocnej premennej. Takto vieme jednoducho vymieňať hodnoty medzi dvoma prvkami.
4. príklad: Ideme na ostrejší príklad so swapom
Sub swap Dim poleDatum(0 to 2) As String Dim stringDatum As String Dim pomocnaPremenna As String stringDatum = InputBox("Zadajte dátum vo formáte dd.mm.rrrr!") poleDatum = Split(stringDatum, ".") pomocnaPremenna = poleDatum(0) REM swap s prvkami poľa poleDatum(0) = poleDatum(2) poleDatum(2) = pomocnaPremenna stringDatum = Join(poleDatum, ".") MsgBox stringDatum End Sub
Rozbor makra: Užívateľ zadá dátum v predpísanom tvare. S pomocou funkcie Split nasekáme reťazec do poľa. Vďaka tomu môžeme využiť swap. Vymeníme nultý prvok s druhým a získame opačne napísaný dátum. Funkcia Join už len premení pole na reťazec a vypíšeme na obrazovku.
No a čo tak ten vstupný reťazec zmeníme na typ Variant? Bude zmena?
5. príklad: Vstupná reťazec nech je typu Variant
Sub swap Dim poleDatum(0 to 2) As String Dim stringDatum As Variant Dim pomocnaPremenna As String stringDatum = InputBox("Zadajte dátum vo formáte dd.mm.rrrr!") poleDatum = Split(stringDatum, ".") pomocnaPremenna = poleDatum(0) poleDatum(0) = poleDatum(2) poleDatum(2) = pomocnaPremenna stringDatum = Join(poleDatum, ".") MsgBox stringDatum End Sub
Rozbor makra: Už dávnejšie vieme, že Variant je ako skladisko premenných. Prehltne všetky typy premenných. Ak napíšeme správne reťazec, tak žiadna zmena oproti 4 programu nenastane.