Domet i životni vek promeljivih

Promenljiva, nakon deklarisanja, ima svoj životni vek i on traje dok se ne završi potprogram u kome je kreirana. Ponekad želimo da ona zadrži svoju vrednost i nakon napuštanja potprograma. Takođe, promenljiva je vidljiva isključivo u okviru modula u kome se potprogram nalazi. Da li postoji potreba da se ona vidi i izvan modula? Kako se definiše domet i produžava životni vek promenljivih saznaćete u tekstu koji sledi.

Ako želimo da promenljiva zadrži svoju vrednost nakon završetka potprograma u kome se nalazi potrebno je da, prilikom njenog deklarisanja, umesto Dim iskoristimo naredbu Static. Ove dve naredbe imaju istovetnu sintaksu. Hajde da vidimo kako ovo radi na jednom jednostavnom primeru:

Sub VLC()

Static a As Integer
MsgBox a
a = 10

End Sub

Kada prvi put pokrenete ovaj potprogram on će u dijalog prozoru prikazati vrednost 0. Ovo se dešava jer promenljiva a dobija vrednost tek nakon prikazivanja dijalog prozora. Ako ga ponovo pokrenete biće prikazana vrednost 10 a to se dešava jer je, nakon napuštanja potprograma, ona zadržalla svoju vrednost

Kada deklarišemo promenljivu ona se može pozvati isključivo iz modula u kome se nalazi. To možemo posebno da naglasimo ukoliko umesto Dim upotrebimo naredbu Private. Ako želimo da ona bude vidljiva i izvan modula iskoristićemo naredbu Public. Promenljive možemo deklarisati i izvan potprograma i u tom slučaju one mogu da važe za više potprograma. Hajde da to pokažemo u primeru:

Public a As Integer
Private b As Integer

Sub VQ()

Dim c As Integer
a = 2
b = 10
c = a + b
MsgBox (c)

End Sub

Naredbe Private/Public mogu se takođe iskoristiti i prilikom deklarisanja procedura ili funkcija. Unosom neke od ovih reči ispred naredbi Sub/Function za deklarisanje utičemo na njihovu vidljivost u okviru aplikacije.