Excel VBA variabelt omfång

Innehållsförteckning:

Anonim

På alla programmeringsspråk har vi variabelåtkomstspecificerare som definierar varifrån en definierad variabel kan nås. Excel VBA är inget undantag. VBA har också omfångsspecifikatorer. Dessa omfångsspecifikatorer kan användas för att ställa in synligheten/omfattningen av en variabel i Excel VBA.

I Excel VBA har vi tre typer av omfångsspecifikatorer:

  1. Förfarandenivå
  2. Privat - Modulenivå
  3. Allmän - Projektnivå

VBA Procedure Level Variable Scope

Variablerna som deklareras inom en delrutin kan endast nås i den proceduren/funktionen. De har en förfaringsnivå. De deklareras vanligtvis med Dim sökord. Om modulen är alternativimplicit kan variabeln kanske inte deklareras, bara användas direkt.

I exemplet nedan har vi ett subrutinomfångstest som har variabel x och y. När vi kör den första subrutinen går den perfekt och skriver ut summan av X och Y

Alternativ Explicit Sub scopeTest () Dim x, y Som heltal 'Procedurnivå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 kör subrutinsumman, kommer det ett fel att variabeln inte deklareras. Varför? Eftersom X och Y är privata för proceduren scopeTest och subrutinsumma har inte tillgång till dem. Därför stöter suben på ett fel.

VBA privat variabel- modulnivå

När du vill deklarera en variabel som måste nås i hela modulen, deklarerar du den variabeln som privat högst upp på modulen, innan någon underprogram eller funktion.

De variabler som deklarerats före någon underprogram, i modulen, är som standard privata. Även om du deklarerar dem med Dim sökord. Men för att vara specifik är det klokt att använda det privata sökordet.

Nedanstående två procedurer finns i samma modul, modul 1.

Alternativ Explicit 'Modulenivåvariabel i VBA. Båda variablerna x och y är privata för denna modul. och 'kan nås från valfri del eller funktion inom denna modul. Dim x As Integer Private y As Integer Sub scopeTest () 'Detta kan nås från valfri modul i projektet x = 2 y = 3 Debug.Print x + y End Sub Privat sub sum () 'Detta kan inte nås från andra moduler x = 5 y = 7 Debug.Print x + y End Sub 

De två ovanstående funktionerna fungerar perfekt eftersom variabeln x och y är de privata variablerna för denna modul.

Viktig: De sista värdena lagrade i x och y behålls tills hela modulen. Om vi ​​kör sub scopeTest först och inte initierar värdena för x och y i delsumma och kör det, kommer initialvärdet för x och y att vara oförändrat.

Underrutan nedan definieras i en separat modul, modul 2. När jag försöker komma åt variabeln från en annan modul, körs VBA -proceduren (eller funktionen) in i ett fel.

Men om jag försöker ringa till subrutinen belopp från modul 1 i modul 2 fungerar detta perfekt. För att göra din funktion och underrutiner privata för modulen, använd nyckelordet Privat före sub och funktion.

Notera:- Variablerna som deklareras före någon underprogram eller funktion i en modul är som standard privata för modulen. Du kan använda Privatnyckelord. Men funktionerna och delrutinerna är offentliga som standard och kan nås av alla moduler i ett projekt. För att göra funktioner och subrutiner privata för modulen måste du använda det privata nyckelordet.

Offentliga variabler- Projektnivå

Som vi lärde oss i exemplen ovan är funktionen och underrutinerna som standard offentliga och kan nås från valfri modul men variabler är det inte. För att göra en variabel tillgänglig från valfri modul i Excel VBA,vi använder offentligt sökord.

För att deklarera en offentlig variabel i ett projekt har du deklarerat dem högst upp på modulen, före någon funktion eller underprogram med det offentliga sökordet. Nedanstående kod är skriven i modul 1.

Alternativ Explicit 'Projektnivåvariabel i VBA. Public x As Integer Public y As Integer Public Sub scopeTest () 'Detta kan nås från valfri modul i projektet x = 2 y = 3 End Sub Private Sub sum ()' Detta kan inte nås från andra moduler x = 5 y = 7 Debug.Print x + y Avsluta Sub

Och denna underprogram finns i en annan modul, modul 2.

Alternativ Explicit Sub mul () Samtalsomfång Test 'Samtalsumma' det fungerar inte eftersom det är privat för modul 1 Debug.Print x * y End Sub 

Den här gången går det perfekt.
Först har jag ringt till subroutine scopeTest. Eftersom scopeTest är offentligt kallas det. Det initierar värdena för x och y. Därefter multiplicerar vi x och y. Eftersom scopeTest -subrutinen hade initierat den med värden 2 och 3, blir resultatet 6.

Så ja killar, så här kan du använda variabelomfångsspecifikatörerna i Excel för att styra synligheten av variabler, funktioner och underrutiner i Excel VBA -projekt.

Jag försökte förklara Access Specifiers för VBA på det enklaste sättet jag kunde. Jag hoppas att det var förklarande. Om du har några tvivel angående denna artikel eller något annat VBA -relaterat tvivel, fråga mig i kommentarfältet nedan. Jag kommer gärna hit från dig.

ByRef och ByVal -argument | När ett argument skickas som ett ByRef -argument till en annan sub eller funktion skickas referensen till den faktiska variabeln. Alla ändringar som görs i kopian av variabeln kommer att återspeglas i originalargumentet.

Ta bort blad utan bekräftelsefrågor med VBA i Microsoft Excel | Eftersom du tar bort blad med VBA vet du vad du gör. Du vill berätta för Excel att inte visa den här varningen och ta bort det jävla arket.

Lägg till och spara ny arbetsbok med VBA I Microsoft Excel 2016 | I den här koden skapade vi först en referens till ett arbetsbokobjekt. Och sedan initierade vi det med ett nytt arbetsbokobjekt. Fördelen med detta tillvägagångssätt är att du enkelt kan utföra den nya arbetsboken. Som att spara, stänga, radera osv

Visa ett meddelande i Excel VBA -statusfält Statusfältet i Excel kan användas som kodmonitor. När din VBA -kod är lång och du utför flera uppgifter med VBA, inaktiverar du ofta skärmuppdateringen så att du inte ser att skärmen flimrar

Stäng av varningsmeddelanden med VBA i Microsoft Excel 2016 | Den här koden inaktiverar inte bara VBA -varningar utan ökar också kodens tidseffektivitet. Låt oss se hur.

Populära artiklar:

50 Excel -genvägar för att öka din produktivitet | Bli snabbare på din uppgift. Dessa 50 genvägar får dig att arbeta ännu snabbare med Excel.

VLOOKUP -funktionen i Excel | Detta är en av de mest använda och populära Excel -funktionerna som används för att leta upp värde från olika intervall och ark.

COUNTIF i Excel 2016 | Räkna värden med förhållanden med denna fantastiska funktion. Du behöver inte filtrera dina data för att räkna specifikt värde. Countif -funktionen är avgörande för att förbereda din instrumentpanel.

Hur man använder SUMIF -funktionen i Excel | Detta är en annan viktig instrumentpanel. Detta hjälper dig att summera värden på specifika förhållanden.