IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

2. diel - Dátové typy vo VBA

V predchádzajúcej lekcii, Úvod do VBA , sme sa zoznámili s jazykom VBA, získali základné informácie, definície a začali sme s príkladmi.

Pokračujeme ďalšie porcií definícií, aby sme sa zoznámili so základnými stavebnými kameňmi jazyka. Vytvoríme najjednoduchšie príkazy, precvičíme si počítanie s číslami a budeme spájať texty. Všade nás bude sprevádzať definície dátových typov, ktorá spresní naše programy.

Definícia

Výraz

Výraz je jeden alebo viac prvkov programu spojených operátormi, ktoré možno vyhodnotiť, teda vrátiť hodnotu. Vyhodnocovanie prebieha podľa stanovené priority.

Príkaz

Príkaz je najmenšia samostatná časť programu popisujúcu nejakú činnosť, ktorá má byť vykonaná. Ide o uskutočniteľný kód, prvkom alebo častí príkazu býva väčšinou výraz. Viac príkazov tvorí funkcie, procedúry a moduly.

Konštanta

Konštanta má vyhradený názov Const. Je to pomenované miesto v pamäti, jeho hodnota je určená v deklarácii a nemožno ju meniť. Deklarácia konštanty musia byť v programe vykonaná pred jej použitím.

Operátor

Operátor je znak alebo niekoľko znakov, ktoré spájajú výrazy a predstavujú funkciu matematických alebo logických operácií. Napr. sčítanie, delenie, nerovnosť.

= - rovná sa

Znak, ktorý má výsadné postavenie. Vo VBA znamená priradenie hodnoty premennej stojaci na ľavej strane od = usudzuje na výrazom alebo funkciou, ktorá stojí od = vpravo. Napr. zápis x = a + 5 znamená, že do premennej x priradíme hodnotu premennej a ak nej pripočítame 5. Zápis x = x + 12 je vo VBA úplne legálne, výsledkom je pôvodná hodnota premennej x zväčšená o 12.

Objekt

Je programový modul popisujúce a obsluhujúci určitú časť aplikácie MS Office. Príklady v aplikáciách: v Exceli je to oblasť buniek alebo zošit, vo Worde je to odsek alebo slovo, v Access napríklad tabuľka alebo formulár. Vo VBA má objekt trochu iný význam, než v objektovo orientovaných jazykoch. Podrobnejšie sa objekty budeme zaoberať v ďalších častiach a najmä pri jednotlivých aplikácií.

Dátové typy

Dáta si program ukladá do pamäte podľa názvov premenných, ktoré ste im priradili v deklarácii a ako ich používate v programe. Dáta ale nie sú hromada smeti, sú ukladané podľa presných pravidiel nazvaných typ a podľa určeného typu s nimi program pracuje. Nemožno násobiť číslo a názov firmy, alebo logickú hodnotu porovnávať s dátumom. Výpočet dátových typov:

dátový typ použitie popis
Boolean logická premenná nadobúda hodnôt Pravda = True a Nepravda = False
byte malé celé číslo rozsah 0 - 255
Currency mena Výpočty v pevnej desatinnej čiarke s vysokou presnosťou
date dátum a čas Dátum je v pamäti uložené ako číslo, v programe alebo výpisu má rôzne formy interpretácie
double reálne číslo dvojité presnosti Rozsah (10 na 308), teda jednička s 308 nulami, presnosť na trinásť desatinných miest
integer celočíselné hodnoty Rozsah -32 tisíc až +32 tisíc
long celočíselné hodnoty dlhé Rozsah -2,14 miliardy až +2,14 miliardy
object odkaz na objekt bude upresnené ďalej v kurze
single reálne číslo jednoduchej presnosti Rozsah (10 na 38), presnosť sedem cifier
string reťazec znakov Dĺžka až 64000 B
variant rôzny typ dát ak nie je deklarovaný typ dát, program ho sám určí a vnútorne vykonáva konverzie typov, je to pomalší a menej presné, než určiť typ údajov v deklarácii
Operátormi

Premenné sú pomocou operátorov spojené do výrazov. Aritmetické operátory vo VBA sú:

operátor Názov Príklad výsledok
+ súčet 4 + 11 15
- rozdiel 8 - 3 5
* násobenie 4 * 2 8
/ delenie 16 / 2 8
\ celočíselné delenie 16 \ 3 5
^ mocnina 3 ^ 2 9
Mod zvyšok po delení 16 Mod 3 1
& zlúčenie reťazcov "Áno alebo" & "Nie" "Áno alebo Nie"
Priorita operácií

Najjednoduchším príkazom je priradenie, napríklad výsledok výpočtu súčtu a súčinu sa uloží do premennej y. Najskôr sa násobí, až následne sčíta.

y = 15 + 3 * 10    'Výsledek   y = 45

VBA zachováva prioritu operácií podľa aritmetiky. Ak chceme poradie operácií vo výpočte zmeniť, použijeme okrúhle zátvorky - ().

y = (15 + 3) * 10   'Výsledek   y = 180

Presnosť deklarácie dátových typov

Jazyk VBA nemá prísnu typovú kontrolu premenných. Možno toho s výhodou využiť tak, že nie je potrebné transformácie typov, ale pri nevhodnom použití môže dôjsť k strate presnosti pri operáciách medzi číslami alebo k chybe pri práci s inými typmi.

V nasledujúcej procedúre sčítame reálne a celé číslo, výsledok sa uloží do celého čísla a tým dôjde automaticky k zaokrúhlenie, program chybu nehlási.

Public Sub subCisla()
'ukázka chybné deklarace typu výsledku
'program chybu nehlásí, reálné číslo zaokrouhlí na celé
'-----------------------------
'deklarace proměnných
Dim y As Integer 'chyba, výsledek musí být také Single
Dim a As Single
Dim b As Integer

'naplnění proměnných /i v českém Excelu je ve VBA nutno používat desetinnou tečku/
    a = 4.5337
    b = 6
'výpočetní příkaz
    y = a + b

'zobrazení výsledku v okně Immediate y=11
    Debug.Print y
End Sub

Spájanie reťazcov

Častým príkazom v rámci VBA je správa, ktorá má štandardnú časti textu a obsahuje napríklad čísla, ktoré sa dopĺňajú importom, čítaním z tabuľky Excelu, alebo z iných zdrojov.

Jednoduchý príklad subTexty() je ukážkou spájanie textového reťazca, čísla sú ukladané ako reťazec.

Public Sub subTexty()
'spojování textu
'------------------------------
'Deklarujeme si části textu jako konstanty
Const c1 = "Na hřišti bylo "
Const c2 = " dospělých a "
Const c3 = " dětí"

'deklarujeme si proměnné, které lze libovolně naplnit
Dim vTxt1 As String
Dim vTxt2 As String
Dim napis As String

'naplníme proměnné, jsou typu řetězec znaů
    vTxt1 = "5"
    vTxt2 = "37"
'sestavíme výsledek
    napis = c1 & vTxt1 & c2 & vTxt2 & c3

'zobrazení výsledku v okně Immediate; "Na hřišti bylo 5 dospělých a 37 dětí"
    Debug.Print napis
End Sub

Tu opäť upozorňujem z iného uhla: Typová kontrola nie je striktné. Tam, kde je možný prevod čísel a textu, program vykoná transformáciu typov a nehlási chybu. Je to z dôvodu spätnej kompatibility k pôvodným verziám jednoduchého jazyka Basic.

Nasledujúce procedúra je obdobou predchádzajúca subTexty(), ale jedna z častí textového reťazca je deklarovaná ako číslo.

Public Sub subTextyJinak()
'---> změna typů a správný výsledek proti subTexty <---
'------------------------------------------------------
Const c1 = "Na hřišti bylo "
Const c2 = " dospělých a "
Const c3 = " dětí"

Dim vInt1 As Integer 'pozor, zde je změna
Dim vTxt2 As String
Dim napis As String

    vInt1 = 5  'naplňujeme jako číslo, ne řetězec
    vTxt2 = "37"

    napis = c1 & vInt1 & c2 & vTxt2 & c3  'vInt1 jsme použili jako řetězec bez typové změny

'napis = "Na hřišti bylo 5 dospělých a 37 dětí"
    Debug.Print napis
End Sub

Tým je dnešná lekcia u konca.

V budúcej lekcii, Podmienené príkazy vo VBA , budeme vytvárať podmienené príkazy a vetviť program na základe ich výsledku.


 

Predchádzajúci článok
Úvod do VBA
Všetky články v sekcii
Základy Microsoft VBA
Preskočiť článok
(neodporúčame)
Podmienené príkazy vo VBA
Článok pre vás napísal Luboš Marvan
Avatar
Užívateľské hodnotenie:
4 hlasov
Snahou autora je žít podle svého
Aktivity