Deklariranje (proglašavanje, objava) varijabli u VBA
Postoje neka pravila u radu sa Variablama:
- Naziv (Ime) Variable mora početi "slovom" a ne
brojem. Broj može biti sastavni dio Variable ali ne
na početku. Kao i kod procedura
- Naziv (Ime) Variable ne smije biti duže od 255
znakova
- Naziv (Ime) Variable ne smije biti istog naziva
kao i
neke ključne riječi
u Excelu
- Naziv (Ime) Variable mora biti kontinuirani niz
znakova bez prekida. Ako želite istaknuti neke
dijelove to možete pomoću velikih početnih slova (npr:
MojPopust, OsnovnaPlaca)
Poželjno je da Varijable imenujete nekim smislenim
imenom (nazivom) da bi ste mogli lako na prvi pogled
uočiti o čemu se radi u dotičnom VBA kodu.(ovo je
važno kod eventualno naknadnih promjena).
Na internetu ćete naći VBA kodova koji kao Variablu
koriste samo "jedno slovo". Ovo nije dobra praksa i
treba je izbjegavati.
VARIABLE mogu biti deklarirane (proglašene ili
objavljene) kao neki od podataka nevedenih u tablici
ispod. U koliko vas zanimaju veličine Bite (bit) ili
Byte (bajt) tada pogledajte tutorijal o
Brojevnim Sustavima
DEKLARIRANJE VARIJABLI
Deklariranje varijable predstavlja navođenje imena i
tipa varijable, koju ćemo koristiti u programu.
Deklariranje varijabli vrši se upotrebom riječi "Dim"
što je skraćeno od "Dimension" i može se vršiti
unutar procedure, pa tako dobivamo varijablu
proceduralnog raspona (range) jer svaka varijable
ima svoj raspon (o tome više u slijedećem linku),
ili se može vršiti na vrhu modula kada dobivamo
varijablu raspona Modula. Tako se, npr: cjelobrojna
varijabla X deklarira na slijedeći način:
Dim
X
as Integer
'deklarirana varijabla X
kao
Integer
Ukoliko se ne navede tip varijable, podrazumijeva se
tip Variant.
Varijable se u suštini mogu deklarirati bilo gdje
unutar procedure. Jedino ograničenje je da
deklariranje varijable mora prethoditi prvoj
upotrebi te varijable u proceduri. Ipak, dobra je
praksa deklariranje vršiti odmah na početku
procedure, tj. prije ostalih naredbi, jer na taj
način vrlo brzo možemo provjeriti
ispravnost deklariranja svih varijabli bez
pretraživanja koda.
Deklariranje više varijabli u jednoj liniji se vrši
tako što se deklariranje pojedinih varijabli odvaja
zarezima, npr:
Dim
X
As
Integer, Y
As
Double, S
as
String
Ukoliko imate više varijabli istog tipa, tip se mora
navesti za svaku varijablu posebno. Tako će linija
koda
Dim X As Integer, Y
As Integer
deklarirati X i Y kao cjelobrojne
varijable, dok će skraćeni oblik
Dim X, Y As
Integer
deklarirati Y kao cjelobrojnu varijablu i
X kao
Variant varijablu.
Ovakva deklaracija varijabli, tj. korištenjem riječi
Dim, naziva se još i eksplicitnim
deklariranjem.
Drugi način je tzv. implicitno deklariranje,
koje se vrši kada varijablu koristimo u izrazu bez
njenog prethodnog deklariranja.
Ako npr: varijabla
S nije deklarirana, onda će izraz
S = "Zagrebacki
Velesajam"
'nedeklarirana varijabla ili implicitno deklarirana
(nema DIM) i slovi kao Variant pa zauzima puno
memorije
deklarirati varijablu S tipa
Variant i zauzet će puno memorije, što nije
dobro. Iz ovoga proizilazi da je dobro uvijek
deklarirati varijable.
Prednost implicitnog
deklariranja je ta da ne morate da vodite
računa o deklariranju, već da varijable koristite
kako vam zatrebaju. Međutim, ovakvo deklariranje ima
i svojih nedostataka.
Prvi
nedostatak je da se lako može napraviti
greška kada se radi sa dužim imenima varijabli.
Pretpostavimo, npr: da u proceduri implicitno
deklariramo varijablu
ProsjekPlaca, (dakle bez riječi DIM ispred) i
da se kasnije greškom pozovemo na tu varijablu kao
ProsjekPlaka.
VBA ovo neće tumačiti kao grešku, već će implicitno
deklarirati novu varijablu koja nema veze sa
varijablom ProsjekPlaca.
Pri radu sa velikim programima, ovo može biti veliki
problem, jer se, zbog sličnosti imena varijabli,
greške teško pronalaze u šumi izraza. Ovo se ne može
dogoditi ako sve varijable koje koristite u programu
eksplicitno deklarirate.
Drugi nedostatak
je ta da
Variant varijable zauzimaju više memorijskog
prostora od ostalih tipova. Ovaj nedostatak je
zanemarljiv kod malih programa, ali kod većih može
doći do izražaja, pogotovo kod slabijih računala,
jer rad sa Variant varijablom zahtjeva više vremena
od rada sa ostalim tipovima.
Razlog ovome je stalna provjera vrste podataka
smještene u Variant varijabli.
Pri implicitnom deklariranju (nedeklariranju) možemo
koristiti tzv. znak (character) za definiranje tipa
(type-declaration character) koji se nadovezuje na
ime varijable da definira njen tip. Znakovi
(simboli) za definiranje tipa dati su u tablici
ispod
|
Tip varijable |
Znak za definiciju tipa |
Integer |
% |
Long |
& |
Currency |
@ |
Single |
! |
Double |
# |
String |
$ |
|
|
npr:
Double varijablu
Broj možemo implicitno deklarirati na
slijedeći način:
Broj# = 23.7
'Broj je Double varijabla i
sadrži brojeve sa zarezom
Eksplicitno deklariranje može se forsirati
uključenjem opcije "Require
Variable Declaration" koja se nalazi u VBE.
VBE dodaje izraz Option Explicit u sve nove
module, koji zahtijevaju eksplicitno deklariranje
varijabli u tim modulima.
-----------------------------------------------------------------------------------------------------------------
Kako bi prisilili sebe da deklarirate sve varijable
koje koristite, možete i sami umetnuti slijedeći
izraz na vrh
modula iznad svih ostalih Macro kodova
Option Explicit
'izraz koji će explicitno zahtijevati deklariranje
svih varijabli
Ako koristite ovu naredbu, Excel prikazuje poruku o
pogrešci ako naiđe da varijabla nije deklarirana.
Nakon što ste dobili naviku da ispravno deklarirate
varijable, shvatit ćete da to pomaže eliminirati
greške i lakše ih uočavati.
U koliko želite ovu naredbu automatizirati tada u
Excelu uradite slijedeće:
Otvorite VBE u Excelu i kliknite na Tools => Options.
Na dijalog prozoru uključite opciju "Require
Variable Declaration". Napravite restart
Excela.
Dakle, još jednom. Uvijek bi trebali deklarirati
(proglasiti važećom) varijablu prije njenog
korištenja. Nakon proglašavanja (deklariranje) jedne
varijable prijeđite u novi red pa deklarirajte drugu
varijablu i tako redom.
Sub Unos()
Dim Unesi 'deklarirana
varijabla "Unesi" kao Variant
Dim Prenesi 'deklarirana
varijabla "Prenesi" kao Variant
Zbroji 'implicitno
deklarirana varijabla tipa Variant (nedeklarirana
varijabla)
End Sub
Umjesto da nižete red za redom i deklarirate više
varijabli, možete u jednoj naredbenoj liniji koda
iskoristit sve varijable, koje moraju biti odvojene
zarezima
Sub Unos()
Dim Unesi, Prenesi
'deklarirane varijable "Unesi" i "Prenesi"
kao Variant
Zbroji 'implicitno
deklarirana varijabla tipa Variant (nedeklarirana
varijabla)
End Sub
Uočite da se deklariranje varijable vrši sa
naredbom DIM (Dimension)
KLJUČNE RIJEČI u Excelu
koje nije poželjno koristiti kao ime varijable
Ovo su neke od ključnih riječi kojima ne bi trebali
imenovati varijable. Ove riječi (nazive) VBA koristi
za internu upotrebu.
And (Bitwise) |
And (Condition) |
As |
Boolean |
ByRef |
Byte |
ByVal |
Call |
Case |
CBool |
CByte |
CDate |
CDbl |
CInt |
CLng |
Const |
CSng |
CStr |
Date |
Dim |
Do |
Double |
Each |
Else |
ElseIf |
End |
EndIf |
Error |
FALSE |
For |
Function |
Get |
GoTo |
If |
Integer |
Let |
Lib |
Long |
Loop |
Me |
Mid |
Mod |
New |
Next |
Not |
Nothing |
Option |
Or (Bitwise) |
Or (Condition) |
Private |
Public |
ReDim |
REM |
Resume |
Select |
Set |
Single |
Static |
Step |
String |
Sub |
Then |
To |
TRUE |
Until |
vbCrLf |
vbTab |
With |
While |
Xor |
|
|
Dakle varijablu bi trebali imenovati nekim smislenim
nazivom koji je vezan uz dotičnu radnju
Sub Unos()
Dim Unesi
'deklarirana varijabla "Unesi", tj. proglasavanje
varijable "Unesi" kao javnu izjavu da je postojeca
End Sub
|