Excel VBA variabelt omfang

Indholdsfortegnelse:

Anonim

På alle programmeringssprog har vi variabeladgangsspecifikatorer, der definerer, hvorfra der kan tilgås en defineret variabel. Excel VBA er ingen undtagelse. VBA har også omfangsspecifikationer. Disse omfangsspecifikationer kan bruges til at indstille synligheden/omfanget af en variabel i Excel VBA.

I Excel VBA har vi tre typer omfangsspecifikationer:

  1. Procedureniveau
  2. Privat - Moduleniveau
  3. Offentligt - Projektniveau

VBA Procedure Level Variable Scope

De variabler, der erklæres inden for en underrutine, kan kun tilgås i denne procedure/funktion. De har et procedurniveau. De er normalt erklæret med Dim søgeord. Hvis modulet er option implicit, er variablen muligvis ikke blevet deklareret, bare brugt direkte.

I nedenstående eksempel har vi en subrutine scope test, der har variabel x og y. Når vi kører den første underprogram, kører den perfekt og udskriver summen af ​​X og Y

Mulighed Eksplicit underområde Test () Dim x, y Som heltal 'Variabel i procedureniveau 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 kører subrutinesummen, udsender den en fejl, at variablen ikke deklareres. Hvorfor? Fordi X og Y er private for procedurens omfang Test og subrutinesum har ikke adgang til dem. Derfor støder suben på en fejl.

VBA Private Variable- Modulniveau omfang

Når du vil erklære en variabel, der skal tilgås i hele modulet, så erklærer du denne variabel som privat øverst på modulet, før enhver underprogram eller funktion.

De variabler, der er deklareret før en underprogram, i modulet, er som standard private. Selvom du erklærer dem med Dim søgeord. Men for at være specifik er det klogt at bruge det private søgeord.

Nedenstående to procedurer er i det samme modul, modul 1.

Option Explicit 'Modulniveauvariabel i VBA. Begge variabler x og y er private for dette modul. og 'kan tilgås fra enhver sub eller funktion i dette modul. Dim x As Integer Private y As Integer Sub scopeTest () 'Dette kan tilgås fra ethvert modul i projektet x = 2 y = 3 Debug.Print x + y End Sub Privat delsum () 'Dette kan ikke tilgås fra andre moduler x = 5 y = 7 Debug.Print x + y End Sub 

De to ovenstående funktioner vil køre helt fint, da variablen x og y er de private variabler til dette modul.

Vigtig: De sidste værdier gemt i x og y bevares, indtil de er i hele modulet. Hvis vi kører sub scopeTest først og ikke initialiserer værdierne for x og y i delsum og kører den, så vil den oprindelige værdi af x og y være uændret.

Nedenstående underprogram er defineret i et separat modul, modul 2. Når jeg forsøger at få adgang til variablen fra et andet modul, løber VBA -proceduren (eller funktionen) ind i en fejl.

Men hvis jeg prøver at kalde underrutinen sum fra modul 1 i modul 2 fungerer dette perfekt. For at gøre din funktion og underrutiner private for modulet skal du bruge søgeordet Privat før sub og funktion.

Bemærk:- Variablerne, der er deklareret før en underprogram eller funktion i et modul, er som standard private for modulet. Du kan bruge Privatnøgleord. Men funktionerne og underrutinerne er som standard offentlige og kan tilgås af ethvert modul i et projekt. For at gøre funktioner og underrutiner private for modulet skal du bruge det private søgeord.

Offentlige variabler- omfang på projektniveau

Som vi lærte i ovenstående eksempler, er funktionen og underrutiner som standard offentlige og kan tilgås fra ethvert modul, men variabler er ikke. For at gøre en variabel tilgængelig fra ethvert modul i Excel VBA,vi bruger offentligt søgeord.

For at deklarere en offentlig variabel i et projekt har du erklæret dem øverst på modulet, før nogen funktion eller underprogram med det offentlige søgeord. Nedenstående kode er skrevet i modul 1.

Mulighed Eksplicit 'Projektniveauvariabel i VBA. Offentlig x Som heltal Offentlig y Som heltal Public Sub scopeTest () 'Dette kan tilgås fra ethvert modul i projektet x = 2 y = 3 End Sub Private Sub sum ()' Dette kan ikke tilgås fra andre moduler x = 5 y = 7 Debug.Print x + y Afslut Sub

Og denne underprogram er i et andet modul, modul 2.

Mulighed Eksplicit sub mul () Opkaldsområde Test 'Call sum' det virker ikke, da det er privat for modul 1 Debug.Print x * y End Sub 

Denne gang kører det perfekt.
Først har jeg kaldt subroutine scopeTest. Da scopeTest er offentligt, kaldes det. Det initialiserer værdierne for x og y. Dernæst multiplicerer vi x og y. Da scopeTest -underprogrammet havde initialiseret det med værdier 2 og 3, er resultatet, vi får, 6.

Så ja fyre, sådan kan du bruge variabelomfangsspecifikationerne i Excel til at kontrollere synligheden af ​​variabler, funktioner og underrutiner i Excel VBA -projekter.

Jeg forsøgte at forklare adgangsspecifikationerne til VBA på den enkleste måde, jeg kunne. Jeg håber, det var forklarende. Hvis du er i tvivl om denne artikel eller anden VBA -relateret tvivl, så spørg mig i kommentarfeltet herunder. Jeg vil glæde mig herfra fra dig.

ByRef og ByVal -argumenter | Når et argument sendes som et ByRef -argument til en anden sub eller funktion, sendes referencen til den aktuelle variabel. Eventuelle ændringer, der foretages i kopien af ​​variablen, vil afspejle sig i det originale argument.

Slet ark uden bekræftelsesmeddelelser ved hjælp af VBA i Microsoft Excel | Da du sletter ark ved hjælp af VBA, ved du, hvad du gør. Du vil gerne bede Excel om ikke at vise denne advarsel og slette det forbandede ark.

Tilføj og gem ny arbejdsmappe ved hjælp af VBA I Microsoft Excel 2016 | I denne kode oprettede vi først en reference til et projektmappeobjekt. Og så initialiserede vi det med et nyt projektmappeobjekt. Fordelen ved denne tilgang er, at du nemt kan udføre operationer på denne nye projektmappe. Som at gemme, lukke, slette osv

Vis en meddelelse på Excel VBA -statuslinjen Statuslinjen i Excel kan bruges som en kodemonitor. Når din VBA -kode er lang, og du udfører flere opgaver ved hjælp af VBA, deaktiverer du ofte skærmopdateringen, så du ikke kan se, at skærmen flimrer

Sluk advarselsmeddelelser ved hjælp af VBA I Microsoft Excel 2016 | Denne kode deaktiverer ikke kun VBA -advarsler, men øger også kodeens tidseffektivitet. Lad os se hvordan.

Populære artikler:

50 Excel -genveje til at øge din produktivitet | Få hurtigere til din opgave. Disse 50 genveje får dig til at arbejde endnu hurtigere i Excel.

VLOOKUP -funktionen i Excel | Dette er en af ​​de mest anvendte og populære funktioner i excel, der bruges til at slå værdi op fra forskellige områder og ark.

COUNTIF i Excel 2016 | Tæl værdier med betingelser ved hjælp af denne fantastiske funktion. Du behøver ikke at filtrere dine data for at tælle specifik værdi. Countif -funktion er afgørende for at forberede dit dashboard.

Sådan bruges SUMIF -funktionen i Excel | Dette er endnu en vigtig instrumentbrætfunktion. Dette hjælper dig med at opsummere værdier på bestemte betingelser.