Preddefinované dátové typy
Keďže teóriu o štruktúrach poznáte dobre a ich využitie tiež už z minulého článku, ukážeme si len deklarácie preddefinovaného dátového typu.
1. spôsob deklarácie:
Dim mojTyp As New com.sun.star.beans.PropertyValue
2. spôsob deklarácie:
Dim mojTyp : mojTyp = CreateObject("com.sun.star.beans.PropertyValue")
3. spôsob deklarácie:
Dim mojTyp : mojTyp = CreateUnoStruct("com.sun.star.beans.PropertyValue")
Vidíme sa stále opakujúcu časť: com.sun.star.beans.PropertyValue
, čo nie je nič iné len odkaz
na daný preddefinovaný dátový typ.
Príkaz Set
Ukážeme si alternatívu ku klasickej deklarácii premenných. Môžete použiť túto možnosť miesto deklarácie premenných.
Tento príklad už poznáte z minulého článku.
Príklad 1: Príklad na príkaz Set
REM definujeme vlastný dátový typ Type Vec REM vlastná štrukúra Meno As String Dlzka As Integer Sirka As Integer Vyska As Integer Farba As String End Type Sub Makricko REM začiatok procedúry REM deklarácia vlastného dátového typu Dim mojTyp As Vec REM priradenie do premenných vlastného dátového typu mojTyp.Meno = "Televízia" mojTyp.Dlzka = 30 mojTyp.Sirka = 45 mojTyp.Vyska = 50 mojTyp.Farba = "modrú" REM a vypíšeme Set televizia = new Vec REM príkaz Set REM výstup na obrazovku MsgBox "Špecifikácia veci: " & televizia.Meno & " má dlžku " & televizia.Dlzka & " cm šírku " & televizia.Sirka & " cm, vyšku " & televizia.Vyska & " cm a farbu " & televizia.Farba End Sub REM koniec procedúry
Výsledok makra
Rozbor makra: Prekvapil vás výsledok? Jednoducho, premenná televizia získa vlastností zadefinovanej štruktúry Vec, ale to neznamená, že automatický zdedí vlastností v premennej mojTyp. Z pohľadu programu sú to dve rozdielne štruktúry, ktoré sa vzájomne neovplyvňujú v tomto príklade.
Príklad 2: Vypočítanie objemu kocky, kvádru, gule a valca.
Type geoMetrickyUtvar Meno As String Dlzka As Integer Sirka As Integer Vyska As Integer Objem As Long Polomer As Integer End Type
Sub Makricko Set kocka = new geoMetrickyUtvar With kocka REM spomeňte si na príkaz With .Meno = "Kocka" .Dlzka = 31 .Sirka = 31 .Vyska = 31 .Objem = .Dlzka ^ 3 End With Set kvader = new geoMetrickyUtvar With kvader .Meno = "Kvader" .Dlzka = 31 .Sirka = 77 .Vyska = 14 .Objem = .Dlzka * .Sirka * .Vyska End With Set gula = new geoMetrickyUtvar With gula .Meno = "Gula" .Polomer = 25 .Objem = (4 * (.Polomer ^ 3 * 3.14159))/3 End With Set valec = new geoMetrickyUtvar With valec .Meno = "Valec" .Polomer = 25 .Vyska = 77 .Objem = (3.14159 * .Polomer ^ 2 * .Vyska) End With MsgBox "Objem kocky: " & kocka.Objem & " mm^3" & Chr(10) & "Objem kvadra: " & kvader.Objem & " mm^3" & Chr(10) & "Objem gule: " & gula.Objem & " mm^3" & Chr(10) & "Objem valca: " & valec.Objem & " mm^3" End Sub
Konštanty
Robíte makro a potrebujete, aby nejaká premenná bola stála počas celého behu. Čiže aby nemenila svoju hodnotu. Definujeme takúto premennú ako konštantu a vieme to deklarovať aj v makrách. Využijeme na to kľúčové slovo Const.
Príklad 3: Konštanty
Sub Makricko Const teplotaVaru = 100 REM deklarácia konštanty pomocou Const Dim cislo As Integer cislo = teplotaVaru + 1 teplotaVaru = cislo REM tu vám to spadne MsgBox "Teplota: " & teplotaVaru & " °C" End Sub
Výsledok makra
Rozbor makra: S konštantou nepohnete a výstup programu vás o tom patrne presvedčí.