vba variables option explicit vba
Denna handledning förklarar hur man deklarerar och använder VBA-variabler. Lär dig också om alternativets explicita, variabla omfång, statiska och konstanta variabler:
På en dator lagras alla datavärden i ett minne eller datorlagring. För att komma åt dessa värden måste du ange ett namn som är associerat med det värdet, som kallas en variabel på programmeringsspråk.
I denna handledning lär vi oss hur man deklarerar och definierar en variabel tillsammans med de olika typerna av variabla omfattningar och också utforskar statiska och konstanta variabler i detalj.
=> Kolla här för att se A-Z av VBA-utbildningar
Vad du kommer att lära dig:
VBA-variabler
Variabler är som platshållare för värdena i datalagring. Variabler kan innehålla olika variationer av värden och dessa värden kan ändras under körning av koden.
Varje variabel har ett namn som används för att komma åt värdet. VBA har vissa begränsningar med avseende på namnval.
Nedan listas listan med begränsningar:
- Namnet på din variabel får inte vara mer än 255 tecken.
- Ett variabelnamn kan inte börja med ett nummer.
- Du kan inte börja med specialtecken som!, @, &,., # Eller inte kan ha mellanslag.
- Nyckelord betraktas inte som ett variabelt namn.
Kompilatorn kommer att kasta ett fel om du bryter mot dessa begränsningar
Exempel:
Giltiga variabla namn: varName, Result12, First_Number
Ogiltiga variabla namn: 123abc, #nummer, Sub, abc.123
Första siffran (mellanslag är inte tillåtet mellan ord)
Deklarerar en VBA-variabel
Vi måste använda Ingen nyckelord för att deklarera en variabel. Det finns två avsnitt när en variabel förklaras. 1stär variabelnamnet och 2ndär den typ av värde som ska lagras i variabeln som kallas Datatyp.
Syntax: Dim VariableName Som DataType
Exempel:
- Dim MyAge As Integer
- Dim My_Percentage As Double
- Dim Dimnamn som sträng
Här säger du uttryckligen till kompilatorn att min variabel endast ska lagra dessa typer av data och VBA kommer att se till att kasta ett kompileringsfel som inte matchar när ett värde som definierats för variabeln inte matchar datatypen.
Exempel:
Sub example1() Dim Total_Marks As Integer Total_Marks = “” MsgBox Total_Marks End Sub
Men om du är osäker på datatypen för variabeln, då låter VBA dig hoppa över datatypen. Nedan nämnda syntax är också giltig.
Dim VariableName
När du inte deklarerar datatypen för variabeln, behandlar VBA den som en variantdatatyp, och den är bunden att acceptera vilken typ av dataheltal som ett heltal, sträng, arbetsbok etc. I samma program variantvariabler kan acceptera strängvärde, heltal och alla andra typer också.
Sub VarientVariable() Dim Total_Marks Total_Marks = '' MsgBox Total_Marks Total_Marks = 544.33 MsgBox Total_Marks Total_Marks = 522 MsgBox Total_Marks End Sub
Eftersom Total_Marks är en variantvariabel, till skillnad från den föregående koden, kommer kompilatorn inte att kasta något fel som visas nedan.
Notera: Kom ihåg att VBA låter dig använda en variabel utan att faktiskt förklara den.
Nedanstående exempelkod ger också ett ordentligt resultat. I det här fallet behandlar VBA automatiskt variabeln som en datatyp för Variant. Detta kallas en implicit förklaring.
Sub VariantVariable() Total_Marks = 444 MsgBox Total_Marks End Sub
Fördelarna med att deklarera en variabel
- Lätt att felsöka: Det är bra att deklarera en variabel innan du använder den. Det ger oss en tidigare förståelse av felen som typfel och typfel, vilket minskar risken för att avvika från programmets logik.
- Bättre läsbarhet: Som ett team kommer det att finnas många som tittar på koden, och att deklarera en variabel hjälper alla med vilken typ av värden variabeln förväntas ta och hjälper också användarna att ange lämpliga inmatningsvärden när de kör programmet.
- Lagringsutrymme: Om du inte deklarerar en variabel behandlar VBA den som en variantdatatyp som tar det största utrymmet i minnet (16 byte till 22 byte) jämfört med andra datatyper. Till exempel, om du använder en variabel av typen Byte som bara tar 1 byte och om du inte deklarerar så kommer VBA att reservera ett utrymme på 16 byte och därmed slösa bort minnet.
Alternativ Explicit
För att säkerställa att alla variabler uttryckligen deklareras måste vi använda Option Explicit-uttalandet innan vi använder dem. Den ska användas i början av valfri procedur i den modulen.
Låt oss se ett exempel som inte använder Explicit Explicit Statement.
Sub example3() Dim First_name As String First_name = ' abs' MsgBox Firt_Name End Sub
Kör koden (tryck på F5 eller kör-knappen i verktygsfältet) så får du en tom msg-ruta.
Även om du har deklarerat variabeln hamnade du i en tom resultatruta på grund av skrivfelet i Msgbox Firt_Name. Option Explicit hjälper oss att eliminera sådana fel.
Låt oss göra om samma kod med Option Explicit. Ange alternativet Explicit innan proceduren startar.
Option Explicit Sub VarientVariable() Dim First_name As String First_name = ' abs' MsgBox Firt_Name End Sub
Om du nu kör koden (tryck på F5 eller Run-knappen i verktygsfältet) får du ett kompileringsfel.
Du kan låta VBA lägga till Alternativ Explicit automatiskt.
I VB Editor, Gå till Verktyg -> Alternativ -> Välj 'Kräv variabeldeklaration'.
Nu Alternativ Explicit läggs till automatiskt varje gång du sätter in en ny modul eller spelar in ett nytt makro.
Notera: Option Explicit läggs inte till i den befintliga VBA-koden. Du måste lägga till det manuellt om det behövs.
Tilldela ett värde till variabel
Värden kan tilldelas variabler med samma symbol (=). Om du hänvisar till en cell i Excel måste du använda Range-funktionerna.
Se koden nedan.
Sub varValue() Dim var1 As Integer var1 = 10 Range('C1:C14').Value = var1 MsgBox var1 End Sub
I exemplet ovan är var1 en variabel som lagrar värdet 10 direkt med hjälp av (=) och Range-funktionen hjälper till att ange var1-värde som är 10 i Excel-cell C1 till C14.
Omfattning av en variabel
Varje variabel i ett program har ett definierat omfång. Detta omfång berättar för programmet vilka områden variabeln är synlig, dvs. modulen eller funktionen som kan eller inte kan använda variabeln.
VBA har tre typer av omfång definierade för variabeln.
- Procedurnivå
- Privat modulnivå
- Offentligt modulnivå
Procedurnivå Räckvidd
Variablerna som definieras i ett förfarande, dvs i under- eller funktion, kan bara använda dem. Dessa är inte synliga för något annat förfarande.
Exempel:
Option Explicit Sub ProcScope() Dim msg As String vartext = 'Varible is visible only inside this Sub' MsgBox vartext End Sub Sub VarNotVisible() MsgBox vartext End Sub
När du kör koden ovan kommer msgboxen att returnera ett ordentligt resultat för den första Sub, men för den andra Sub kommer ett Compiler-fel att kastas. Eftersom vertexvariabeln endast är synlig för 1stsub och inte för 2nd. Eftersom vi har använt Option Explicit får vi ett kompileringsfel för att inte definiera variabler i 2ndsub.


Privat modulnivå
Dessa variabler är tillgängliga för alla procedurer i den definierade modulen. Som standard deklareras variablerna med Ingen omfattas som privata. Men det rekommenderas att lägga till privat för bättre läsbarhet.
Låt oss överväga samma exempel men vi kommer att deklarera variabeln utanför proceduren.
Option Explicit Private vartext As String ‘ Dim vartext As String can also be used Sub PrivateScope() vartext = 'Varible is visible to all procedures' MsgBox vartext, ,”Result from Sub1” End Sub Sub VarIsVisible() MsgBox vartext, ,”Result from Sub2” End Sub
Efter körning ser du att båda procedurerna ger korrekt resultat utan något fel. För en tydlig förståelse har vi lagt till rätt titel i msgbox.
Offentligt modulnivåomfång
Dessa typer av variabler är synliga för alla procedurer och i alla projektmoduler. Sätt i 2 moduler. (Högerklicka på ett ark och Infoga -> moduler).
Ange koden nedan i en modul.
Option Explicit Public vartext As String Sub PrivateScope() vartext = 'Varible is visible to all modules' MsgBoxvartext, , 'Result from Sub1' End Sub
Ange koden nedan i den andra modulen.
Option Explicit Sub VarIsVisible() MsgBoxvartext, , 'Result from Sub2' End Sub
Resultaten visas nedan
Låt oss överväga ett praktiskt exempel och förstå hela omfattningen bättre.
Bifogad är referensfilen för ovanstående kod.
Statisk variabel
Normalt bevaras variabelns värde endast från proceduranropet till procedurens slut. Det behåller inte värdet när genomförandet av proceduren är slut.
Till exempel , i ovanstående kod tas värdet på firstNo och secondNo bort så snart proceduren avslutas, nästa gång om du kör koden får firstNo och secondNo samma värde som definierat i koden.
Men statiska variabler är de som kommer att behålla variabelns värde även efter körningen. En statisk variabel är endast tillåten i en sub eller en funktion.
Tänk på koden nedan med en icke-statisk variabel.
Option Explicit Sub staticVariable() Dim count As Integer count = count + 1 Debug.Print count End Sub
Varje gång du träffar F5 får du bara 1 som ett resultat.
Låt oss nu förklara variabeln som statisk.
Option Explicit Sub staticVariable() Static count As Integer count = count + 1 Debug.Print count End Sub
Varje gång du kör koden (F5) får resultatet ett ökat värde för räkning som 1,2,3 etc eftersom den statiska variabeln har behållit sitt värde.
Notera: Statisk variabel behåller värdet tills du trycker på Återställ-knappen i verktygsfältet eller stänger arbetsboken.
Konstant variabel
Som namnet antyder kan värdet på dessa variabler inte ändras under genomförandet av programmet. När en konstant deklareras kan den inte ändras eller tilldelas ett nytt värde.
Deklaration av en konstant kan göras inom ett förfarande eller på modulnivå (framför allt förfaranden).
Option Explicit Sub constantVariable() Const SpeedLimitOfcar As String = '90kmph' Dim myCarSpeed As String myCarSpeed = '70kmph' If myCarSpeed > SpeedLimitOfcar Then MsgBox 'overspeed: Reduce the speed' Else MsgBox 'Within the limit: Always drive below : ' & SpeedLimitOfcar End If End Sub
Om du försöker ändra det konstanta värdet kastas ett kompileringsfel.
Option Explicit Sub ChangeConstantVariable() Const SpeedLimitOfcar As Integer = 90 SpeedLimitOfcar = SpeedLimitOfcar + 10 MsgBox SpeedLimitOfcar End Sub
Vanliga frågor
F # 1) Hur ställer jag in en offentlig variabel i VBA?
Svar: Offentliga variabler deklareras innan ett förfarande inleds. Det offentliga nyckelordet måste användas när en variabel förklaras.
Offentliga Total_Marks som heltal
F # 2) Vilken typ av variabler kan inte deklareras utanför proceduren?
Svar: Statiska variabler kan inte deklareras utanför proceduren i VBA och du får ett kompileringsfel.
F # 3) Hur deklarerar jag en variabel i VBA?
Svar: Dim nyckelord används för att deklarera en variabel. Dim står för Dimension.
Dim variabelnamn som datatyp
F # 4) Hur tilldelar jag ett variabelt värde till en cell i VBA?
Svar: Du kan använda Range-funktionen.
var1 = 10
Område (“C1: C14”). Värde = var1
F # 5) Vad är variabler i VBA?
Svar: Variabler är som platshållare för värdena i datalagring. Variabler kan innehålla olika variationer av värden och dessa värden kan ändras under körning av koden. Varje variabel ska ha ett namn med hjälp av variabelnamnet kommer datorn att hämta det värde som tilldelats för den variabeln.
F # 6) Måste du deklarera en variabel i VBA?
Svar: Deklarationen är valfri i VBA. Om du inte deklarerar en variabel och använder den direkt i proceduren kallas den en implicit deklaration. För att undvika fel i koden och för bättre läsbarhet rekommenderas det att deklarera en variabel uttryckligen.
F # 7) Hur deklarerar jag flera variabler i VBA?
Svar: Du kan deklarera flera variabler i ett deklarationsuttalande. Du behöver bara ange variabelnamnet åtskilda av kommatecken i en As-sats.
bästa webbplatsen för att ladda ner youtube-videor
Dim FirstNo, SecondNo Som Integer
Du kan också ange olika variabler i ett deklarationsuttalande. Varje variabel tar datatypen som anges i As-klausulen efter dess variabelnamnsdel.
Dim a, b som singel, c, d som dubbel, e som heltal, f som sträng
F # 8) När skulle det inte finnas någon skillnad mellan dim och privat i VBA?
Svar: Om du förklarar ett omfång på privat modulnivå är det ingen skillnad mellan att förklara en variabel som dim eller privat. Som standard deklareras variabler med Ingen omfattas som privata. Men det rekommenderas att lägga till privat för bättre läsbarhet.
F # 9) Vad är en variabel på modulnivå?
Svar: Variabler på modulnivå kan vara privata eller offentliga. Privata variabler är tillgängliga för alla procedurer i den modulen och är inte synliga för någon annan modul. Offentliga variabler är synliga för alla procedurer i alla moduler i ett projekt.
Slutsats
En variabel är avgörande i alla programmeringsspråk. I denna handledning har vi sett vad som är variabler, hur man deklarerar och använder dem i programmet. Vi undersökte också metoden Option Explicit, som tvingar genomförandet av den uttryckliga deklarationen.
Olika typer av variabelt omfång som hjälper användarna att bestämma vilka delar av koden variabeln kan användas diskuterades. Vi lärde oss användningen av statiska variabler som hjälper till att behålla värdet på variabeln och konstanta variabler som hjälper till att bibehålla värdet på variabeln oförändrad.
=> Besök här för att lära dig VBA från Scratch
Rekommenderad läsning
- Excel VBA-handledning - Introduktion till VBA i Excel
- Excel VBA Array och Array Methods With Exempel
- VBA-datatyper - Numeriska och icke-numeriska datatyper i VBA
- Python-variabler
- Variabler i C ++
- Java-variabler och deras typer med exempel
- C # Datatyper och variabler med exempel
- VBScript-variabler: Hur man deklarerar och använder variabler - VBScript Dim