Variable Scope
I VBA, er det tre forskjellige scopes av variabler: prosedyre nivå, modul nivå og offentlig nivå. Hver omfang avgjør stedet der variabelen er synlig.
Prosedyre nivå
Når du deklarerer en variabel inne i en subrutine eller en funksjon, det vil bare være synlig i de subrutine /funksjon . Når prosedyren slutt frigjør VBA minnet og den variable er ikke lenger synlig.
Eksempel 1:
Sub procedureLevel1 () Dim myVar Som IntegermyVar = 5Avslutt SubSub procedureLevel2 () Dim myVar Som DoublemyVar = 5.5End Sub
I procedureLevel1 I procedureLevel2, myVar Hvis du ønsker å opprette variabelen og bruke det inne flere prosedyrer i samme modul, må du deklarere den på modulnivå, i begynnelsen av koden din, før første gangs bruk i en prosedyre I begynnelsen av koden er det myVar Du kan ikke tilordne en verdi til en variabel på dette nivået. Du må gjøre det inne prosedyrer. På dette nivået variabler vil være synlig for alle prosedyrer, selv de som er tilstede inne i andre moduler i samme arbeidsbok. For å opprette en slik variabel du trenger å erklære det på samme måte som du gjorde på modulnivå, men denne gangen legger allmenn ord i stedet for Dim.
subrutine , myVar
variabel vil kun være synlig inne at subrutinen og vil bli behandlet som Integer.
vil bli behandlet som Double, og vil bare være synlig inne at subrutinen.
Module nivå
Eksempel 2:.
Dim myVar Som IntegermyVar = 4Sub moduleLevel1 () myVar = 5Avslutt SubSub moduleLevel2 () myVar = 6End Sub
variabel , etter erklært som Integer. Denne variable er synlig inne i modulen. Det betyr at variabelen i moduleLevel1 Hotell og moduleLevel2
er den samme variabel.
FORSIKTIG
Offentlig nivå
Offentlig myVar As Integer