Konstante i promenljive
U okviru jezika VBA postoje dve vrste konstanti:
Ugrađene konstante (literali)
- Celobrojne konstante (23, 456, -234 itd). Vrednosti tipa Integer i Long.
- Realne konstante (23.34, -4.9E-20). Vrednosti tipa Single i Double.
- Niske ("Tekst pod navodnicima", vbTab, vbCr, vbLf, vbCrlLf = vbNewLine). Vrednosti tipa String.
- Logičke konstante (True i False). Vrednosti tipa Boolean.
- Datumi (#10/24/02#). Vrednosti tipa Date.
Format je #mm/dd/gg#, gde je m mesec, d dan,
a g godina.
Konstante koje definiše korisnik
Sintaksa za definisanje korisničkih konstanti je
Const imeKonstante As Tip = vrednostKonstante
Npr,
Const BROJ_MESECI As Integer = 12
Promenljive se koriste u programu za čuvanje podataka i to:
- ulaznih podataka programa,
- podataka koji su dobijeni kao međurezultati izračunavanja u programu, i
- izlaznih podataka programa.
Njihov naziv dolazi otud što se vrednost promenljivih tokom programa može menjati.
Tip promenljivih
S obzirom da se podaci u računaru čuvaju kodirani binarnom azbukom, a jedna binarna
niska može da se interpretira (dekodira) na razne načine
(npr. kao karakter 'A' ili kao dekadni broj 65), neophodno je svakoj promenljivoj
pridružiti njen tip. Tip promenljive određuje koje su dozvoljene vrednosti
promenljive, i koje operacije mogu da se izvode nad tom promenljivom (tj. u kojim izrazima
promenljiva sme da se pojavi kao sastavni deo). Takođe, tip promenljive određuje
na koji način će njen binarni sadržaj biti interpretiran.
Detalji o tipovima u programskom jeziku VBA
Deklaracija promenljivih
Deklaracijom promenljiva započinje svoj "život" u programu. Smisao deklaracije je da
se u memoriji odvoji lokacija za smeštaj podatka željenog tipa, a kojoj će se
pristupati ne preko njene memorijske adrese već preko željenog imena.
Deklaracija promenljivih prostog tipa u VBA
Deklaracija promenljivih prostog tipa u VBA se obavlja naredbom Dim čiji su opšti oblici:
Dim imePromenljive As prostTip
Npr,
Dim godina As Integer
Inicijalizacija promenljivih
Pre no što se započne sa korišćenjem promenljive, neophodno je da ona
poseduje nekakvu vrednost. Dodeljivanje početne vrednosti promenljivoj se naziva
inicijalizacija promenljive.
Inicijalizacija promenljivih prostog tipa se obavlja
naredbom dodele Let, dok se promenljive koje
predstavljaju reference na objekte inicijalizuju naredbom dodele Set.
Mađarska notacija je dogovor o imenovanju promenljivih u programiranju.
Ovde ćemo ilustrovati jedan oblik te notacije kod kojeg prefiks
imena promenljive ukazuje na njen tip, dok ostatak imena ukazuje na namenu promenljive.
Prefiks je obično skraćenica (3-4 slova) koja se lako pamti i koja asocira na
tip promenljive. Prefiks se piše malim slovima. Ostatak imena su spojene reči koje
označavaju namenu promenljive, pri čemu je
prvo slovo svake reči veliko, dok su ostala mala.
U tabeli su navedeni najčešće korišćeni prefiksi za imena promenljivih
određenog tipa u programskom jeziku VBA. Npr. iDan može da predstavlja ime
celobrojne promenljive koja sadrži redni broj dana (1-31), sDan -
promenljivu tipa String (tekst), koja čuva ime dana u nedelji ("Ponedeljak" - "Nedelja"),
dok bJeParan predstavlja promenljivu logičkog tipa čija vrednost
(True ili False)pokazuje da li je neki broj paran ili ne .
Prost tip | Prefiks naziva promenljive | Primer |
Integer | i | iDan |
String | s | sDan |
Boolean | b | bJeParan |
Izraz "opseg važenja" (eng. scope) se koristi za opis
uslova pod kojim se može pristupiti promenljivoj, odnosno uslova pod kojim
se može realizovati poziv potprograma. Kao sinonim za opseg važenja još se koristi izraz "vidljivost".
U zavisnosti od mesta i načina na koji je promenljiva
deklarisana, njoj se može pristupiti:
- samo u okviru jednog potprograma u kome je deklarisana (lokalna promenljiva). Da bi
promenljiva bila lokalna, potrebno je deklarisati je u okviru nekog potprograma (procedure
ili funkcije);
- samo u okviru svih potprograma jednog modula u kome je deklarisana (promenljiva modula).
Da bi promenljiva bila promenljiva modula, potrebno je deklarisati je na početku modula
pre definicije prvog potprograma (dakle, deklaracija mora biti izvan bilo kog potprograma).
Sem uobičajene deklaracije (Dim), da bi se naglasilo da se radi o promenljivoj modula, može se
koristiti i ključna reč Private umesto Dim
- samo u okviru svih potprograma svih modula jednog projekta u kome je deklarisana
(promenljiva projekta). Da bi promenljiva bila promenljiva projekta, potrebno je deklarisati
je na početku modula pre definicije prvog potprograma (dakle, deklaracija mora biti
izvan bilo kog potprograma), ali se u deklaraciji umesto Dim mora koristiti
Public. Da bi se sprečilo da tako deklarisana promenljiva bude globalna, neophodno je
da se na početku modula u kome je deklarisana nalazi Option Private Module.
- u okviru svih potprograma svih modula svih projekata (globalna promenljiva).
Da bi promenljiva bila globalna promenljiva, potrebno je deklarisati
je na početku modula pre definicije prvog potprograma (dakle, deklaracija mora biti
izvan bilo kog potprograma), ali se u deklaraciji umesto Dim mora koristiti
Public. Da bi se sprečilo da tako deklarisana promenljiva bude promenljiva
modula, neophodno je da se na početku modula u kome je deklarisana
NE nalazi Option Private Module.
U zavisnosti od mesta i načina na koji je potprogram
definisan, on se može pozvati:
- samo iz potprograma modula u kome je definisan pozvani potprogram (potprogram modula). Neophodno je da
ispred definicije potprograma stoji ključna reč Private (Private Sub, odnosno Private Function).
- samo iz potprograma projekta u kome je definisan pozvani potprogram (potprogram projekta).
Neophodno je da
ispred definicije potprograma ne stoji nijedna ključna reč, ili da stoji ključna
reč Public. Da bi se sprečilo da tako definisani potprogram bude
globalni potprogram, neophodno je da se na početku modula u kome je definisan
nalazi Option Private Module.
- iz svih potprograma ma kog projekta (globalni potprogram).
Neophodno je da
ispred definicije potprograma ne stoji nijedna ključna reč, ili da stoji ključna
reč Public. Da bi se sprečilo da tako definisani potprogram bude
potprogram modula, neophodno je da se na početku modula u kome je definisan
NE nalazi Option Private Module.
Vidljivost promenljivih koje predstavljaju svojstva objekata, kao i potprograma koji
predstavljaju metode objekata biće posebno obrađena u odeljku
Pristup članovima klase.