På alle programmeringsspråk har vi variabel tilgangsspesifikatorer som definerer hvorfra en definert variabel kan nås. Excel VBA er ingen unntak. VBA har også omfangsspesifikatorer. Disse omfangsspesifikatorene kan brukes til å angi synligheten/omfanget av en variabel i Excel VBA.
I Excel VBA har vi tre typer omfangsspesifikatorer:
- Fremgangsmåte
- Privat - modulnivå
- Offentlig - Prosjektnivå
VBA Prosedyre Nivå Variabelt omfang
Variablene som er deklarert i en delrutine, kan bare nås i denne prosedyren/funksjonen. De har et prosedyre nivå omfang. De er vanligvis deklarert med Dim søkeord. Hvis modulen er alternativ implisitt, kan det hende at variabelen ikke er deklarert, bare brukt direkte.
I eksemplet nedenfor har vi en subrutine omfangstest som har variabel x og y. Når vi kjører den første subrutinen, kjører den perfekt og skriver ut summen av X og Y
Alternativ Eksplisitt delomfangTest () Dim x, y As Integer 'Prosedyre nivåvariabel i VBA x = 2 y = 3 Debug.Print x + y End Sub Sub sum () x = 5 y = 7 Debug.Print x + y End Sub
Men når du kjører subrutinsummen, gir det en feil om at variabelen ikke deklareres. Hvorfor? Fordi X og Y er private for prosedyreomfanget Test og subrutinesum har ikke tilgang til dem. Derfor støter suben på en feil.
VBA Private Variable- Modulenivå
Når du vil deklarere en variabel som må nås i hele modulen, erklærer du variabelen som privat på toppen av modulen, før noen underprogram eller funksjon.
Variablene som er deklarert før noen underprogram, i modulen, er som standard Private. Selv om du erklærer dem med Dim søkeord. Men for å være spesifikk, er det lurt å bruke det private søkeordet.
De to prosedyrene nedenfor er i samme modul, modul 1.
Alternativ Eksplisitt 'Modulenivåvariabel i VBA. Begge variablene x og y er private for denne modulen. og 'kan nås fra hvilken som helst sub eller funksjon i denne modulen. Dim x As Integer Private y As Integer Sub scopeTest () 'Dette kan nås fra hvilken som helst modul i prosjektet x = 2 y = 3 Debug.Print x + y End Sub Privat delsum () 'Dette kan ikke nås fra andre moduler x = 5 y = 7 Debug.Print x + y End Sub
De to funksjonene ovenfor vil fungere helt fint ettersom variabelen x og y er de private variablene til denne modulen.
Viktig: De siste verdiene som er lagret i x og y beholdes til hele modulen. Hvis vi kjører delscopeTest først og ikke initialiserer verdiene til x og y i delsum og kjører den, vil den opprinnelige verdien av x og y være uendret.
Underrutinen nedenfor er definert i en egen modul, modul 2. Når jeg prøver å få tilgang til variabelen fra en annen modul, støter VBA -prosedyren (eller funksjonen) på en feil.
Men hvis jeg prøver å kalle underrutinen sum fra modul 1 i modul 2, fungerer dette perfekt. For å gjøre funksjonen og underrutiner private for modulen, bruk søkeordet Privat før suben og funksjonen.
Merk:- Variablene som er deklarert før noen underprogram eller funksjon i en modul, er som standard private for modulen. Du kan bruke Privatsøkeord. Men funksjonene og underrutinene er offentlige som standard og kan nås av alle moduler i et prosjekt. For å gjøre funksjoner og underrutiner private for modulen må du bruke det private søkeordet.
Offentlige variabler- omfang på prosjektnivå
Som vi lærte i eksemplene ovenfor, er funksjonen og underrutiner som standard offentlige og kan nås fra hvilken som helst modul, men variabler er det ikke. For å gjøre en variabel tilgjengelig fra en hvilken som helst modul i Excel VBA,vi bruker offentlige søkeord.
For å deklarere en offentlig variabel i et prosjekt, har du erklært dem på toppen av modulen, før noen funksjon eller underprogram med det offentlige søkeordet. Koden nedenfor er skrevet i modul 1.
Alternativ Explicit 'Prosjektnivåvariabel i VBA. Offentlig x Som heltall Offentlig y Som heltall Public Sub scopeTest () 'Dette kan nås fra hvilken som helst modul i prosjektet x = 2 y = 3 End Sub Private Sub sum ()' Dette kan ikke nås fra andre moduler x = 5 y = 7 Debug.Print x + y Avslutt Sub
Og denne subrutinen er i en annen modul, modul 2.
Alternativ Eksplisitt delmul () Anropsområde Test "Anropssum" det fungerer ikke, da det er privat for modulen 1 Debug.Print x * y End Sub
Denne gangen går det perfekt.
Først har jeg kalt subroutine scopeTest. Siden scopeTest er offentlig, kalles det. Det initialiserer verdiene til x og y. Deretter multipliserer vi x og y. Siden scopeTest -delprogrammet hadde initialisert det med verdiene 2 og 3, er resultatet 6.
Så ja, det er slik du kan bruke variabelomfangsspesifikatorene i Excel til å kontrollere synligheten av variabler, funksjoner og underrutiner i Excel VBA -prosjekter.
Jeg prøvde å forklare tilgangsspesifikasjonene til VBA på den enkleste måten jeg kunne. Jeg håper det var forklarende. Hvis du er i tvil om denne artikkelen eller annen VBA -relatert tvil, spør meg i kommentarfeltet nedenfor. Jeg kommer gjerne hit fra deg.
ByRef og ByVal -argumenter | Når et argument sendes som et ByRef -argument til en annen sub eller funksjon, sendes referansen til den faktiske variabelen. Eventuelle endringer som gjøres i kopien av variabelen, gjenspeiles i det opprinnelige argumentet.
Slett ark uten bekreftelsesforespørsler ved bruk av VBA i Microsoft Excel | Siden du sletter ark med VBA, vet du hva du gjør. Du vil fortelle Excel om ikke å vise denne advarselen og slette det jævla arket.
Legg til og lagre ny arbeidsbok ved hjelp av VBA I Microsoft Excel 2016 | I denne koden opprettet vi først en referanse til et arbeidsbokobjekt. Og så initialiserte vi det med et nytt arbeidsbokobjekt. Fordelen med denne tilnærmingen er at du enkelt kan utføre operasjoner på denne nye arbeidsboken. Som å lagre, lukke, slette osv
Vis en melding på Excel VBA -statuslinjen Statuslinjen i Excel kan brukes som en kodemonitor. Når VBA -koden din er lang og du gjør flere oppgaver med VBA, deaktiverer du ofte skjermoppdateringen slik at du ikke ser at skjermen flimrer
Slå av advarselsmeldinger ved bruk av VBA I Microsoft Excel 2016 | Denne koden deaktiverer ikke bare VBA -varsler, men øker også tidens effektivitet av koden. La oss se hvordan.
Populære artikler:
50 Excel -snarveier for å øke produktiviteten | Bli raskere på oppgaven din. Disse 50 snarveiene får deg til å jobbe enda raskere med Excel.
VLOOKUP -funksjonen i Excel | Dette er en av de mest brukte og populære funksjonene til excel som brukes til å slå opp verdi fra forskjellige områder og ark.
COUNTIF i Excel 2016 | Tell verdier med betingelser ved hjelp av denne fantastiske funksjonen. Du trenger ikke å filtrere dataene dine for å telle spesifikk verdi. Countif -funksjonen er avgjørende for å forberede dashbordet.
Slik bruker du SUMIF -funksjonen i Excel | Dette er en annen viktig funksjon på dashbordet. Dette hjelper deg med å oppsummere verdier på spesifikke forhold.