vba variables option explicit vba
Denne opplæringen forklarer hvordan du kan deklarere og bruke VBA-variabler. Lær også om eksplisitt alternativ, variabelt omfang, statiske og konstante variabler:
På en datamaskin lagres alle dataverdiene i et minne eller datamaskinlagring. For å få tilgang til disse verdiene, må du spesifisere et navn tilknyttet den verdien, som kalles en variabel på programmeringsspråk.
I denne opplæringen vil vi lære hvordan man kan deklarere og definere en variabel sammen med de forskjellige typene variabelt omfang og også utforske statiske og konstante variabler i detalj.
=> Sjekk her for å se AZ av VBA-opplæringsveiledninger
Hva du vil lære:
VBA-variabler
Variabler er som plassholdere for verdiene i datalagring. Variabler kan inneholde forskjellige varianter av verdier, og disse verdiene kan endres under utførelsen av koden.
Hver variabel vil ha et navn som brukes for å få tilgang til verdien. VBA har visse begrensninger med hensyn til navnevalg.
Nedenfor er listen over begrensninger:
- Navnet på variabelen din kan ikke være mer enn 255 tegn.
- Et variabelnavn kan ikke starte med et tall.
- Du kan ikke starte med spesialtegn som!, @, &,., # Eller ikke kan ha mellomrom.
- Nøkkelord blir ikke betraktet som et variabelnavn.
Kompilatoren kaster en feil hvis du bryter disse begrensningene
Eksempel:
Gyldige variabelnavn: varName, Result12, First_Number
Ugyldige variabelnavn: 123abc, #number, Sub, ca.123
Første nummer (mellomrom er ikke tillatt mellom ord)
Erklærer en VBA-variabel
Vi må bruke Ingen nøkkelord for å erklære en variabel. Det er to seksjoner mens deklarerer en variabel. 1St.er variabelnavnet og 2nder typen verdi som skal lagres i variabelen som kalles datatype.
Syntaks: Dim VariableName Som DataType
Eksempel:
- Dim MyAge As Integer
- Dim My_Percentage As Double
- Dim Full_Name As String
Her forteller du eksplisitt kompilatoren at variabelen min bare skal lagre disse datatypene, og VBA sørger for å kaste en kompilatorfeil for feil når en verdi definert for variabelen ikke samsvarer med datatypen.
Eksempel:
Sub example1() Dim Total_Marks As Integer Total_Marks = “” MsgBox Total_Marks End Sub
Men hvis du er usikker på datatypen til variabelen, så lar VBA deg hoppe over datatypen. Syntaksen nedenfor er også gyldig.
Demp variabelnavn
Når du ikke deklarerer datatypen til variabelen, behandler VBA den som en variantdatatype, og den er bundet til å akseptere alle typer datatall som et heltall, streng, arbeidsbok, etc. I det samme programmet er variantvariabler kan akseptere strengverdi, heltall og hvilken som helst annen type.
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
Ettersom Total_Marks er en variantvariabel, i motsetning til den forrige koden, vil ikke kompilatoren kaste feil som vist nedenfor.
Merk: Husk at VBA lar deg bruke en variabel uten å faktisk erklære den.
Eksemplet nedenfor gir også et skikkelig resultat. I dette tilfellet behandler VBA variabelen automatisk som en variantdatatype. Dette kalles en implisitt erklæring.
Sub VariantVariable() Total_Marks = 444 MsgBox Total_Marks End Sub
Fordelene ved å erklære en variabel
- Enkelt å feilsøke: Det er en god praksis å deklarere en variabel før du bruker den. Det gir oss en tidligere forståelse av feilene som typefeil og skrivefeil, og reduserer dermed risikoen for å avvike fra programmets logikk.
- Bedre lesbarhet: Som et team vil det være mange som ser på koden, og å erklære en variabel vil hjelpe alle med hvilken type verdier variabelen forventes å ta, og også hjelpe brukerne til å legge inn riktige inngangsverdier mens de kjører programmet.
- Oppbevaringsplass: Hvis du ikke deklarerer en variabel, behandler VBA den som en Variant-datatype som tar størst plass i minnet (16 byte til 22 byte) sammenlignet med andre datatyper. For eksempel, hvis du bruker en variabel av typen Byte som bare tar 1 byte, og hvis du ikke erklærer, vil VBA ende opp med å reservere en plass på 16 byte, og dermed kaste bort minnet.
Alternativ eksplisitt
For å sikre at alle variablene blir eksplisitt erklært, må vi bruke Option Explicit-setningen før vi bruker dem. Den skal brukes i begynnelsen av en hvilken som helst prosedyre i den modulen.
La oss se et eksempel som ikke bruker Explicit Explicit Statement.
Sub example3() Dim First_name As String First_name = ' abs' MsgBox Firt_Name End Sub
Utfør koden (trykk F5 eller kjør-knappen i verktøylinjen), og du vil ende opp med å få en tom msg-boks.
Selv om du har erklært variabelen, havnet du i en tom resultatboks på grunn av skrivefeilen i Msgbox Firt_Name. Option Explicit vil hjelpe oss med å eliminere slike feil.
La oss gjøre om den samme koden ved hjelp av Option Explicit. Skriv inn alternativ eksplisitt før prosedyren starter.
Option Explicit Sub VarientVariable() Dim First_name As String First_name = ' abs' MsgBox Firt_Name End Sub
Nå hvis du utfører koden (Trykk F5 eller Run-knappen i verktøylinjen), og du vil ende opp med å få en kompilatorfeil.
Du kan få VBA til å legge til Alternativ eksplisitt automatisk.
I VB Editor, Gå til Verktøy -> Alternativer -> Velg 'Krev variabel erklæring'.
Nå Alternativ eksplisitt vil bli lagt til automatisk hver gang du setter inn en ny modul eller spiller inn en ny makro.
Merk: Option Explicit vil ikke bli lagt til den eksisterende VBA-koden. Du må legge til det manuelt om nødvendig.
Tilordne en verdi til variabel
Verdier kan tilordnes variabler som tilsvarer symbolet (=). Hvis du refererer til en celle i Excel, må du bruke Range-funksjonene.
Se koden nedenfor.
Sub varValue() Dim var1 As Integer var1 = 10 Range('C1:C14').Value = var1 MsgBox var1 End Sub
I eksemplet ovenfor er var1 en variabel som lagrer verdien 10 direkte ved hjelp av (=), og Range-funksjonen vil bidra til å legge inn var1-verdien som er 10 i Excel-celle C1 til C14.
Omfanget av en variabel
Hver variabel i et program vil ha et definert omfang. Dette omfanget forteller programmet områdene der variabelen er synlig, dvs. modulen eller funksjonen som kan eller ikke kan bruke variabelen.
VBA har tre typer omfang definert for variabelen.
- Prosedyrenivå
- Privat omfang på modulnivå
- Offentlig omfang på modulnivå
Prosedyrenivå Omfang
Variablene som er definert i en prosedyre, dvs. i under- eller funksjonen, vil bare kunne bruke dem. Disse er ikke synlige for noen annen prosedyre.
Eksempel:
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 kjører ovennevnte kode, vil msg-boksen returnere et skikkelig resultat for den første Sub, men for den andre Sub vil en Compiler-feil bli kastet. Fordi toppunktvariabelen bare er synlig for 1St.sub og ikke for 2nd. Ettersom vi har brukt Option Explicit, vil vi få en kompilatorfeil for ikke å definere variabler i 2ndunder.


Privat omfangsnivå
Disse variablene er tilgjengelige for alle prosedyrer i den definerte modulen. Som standard er variablene deklarert med Ingen er begrenset som private. Men det anbefales å legge til privat for bedre lesbarhet.
La oss se på det samme eksemplet, men vi vil erklære variabelen utenfor prosedyren.
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
Etter utførelse vil du se at begge prosedyrene vil gi de riktige resultatene uten feil. For en klar forståelse har vi lagt til riktig tittel i msgbox.
Offentlige modulnivåomfang
Disse typer variabler er synlige for alle prosedyrer og i alle moduler i et prosjekt. Sett inn 2 moduler. (Høyreklikk på et ark og Sett inn -> moduler).
Skriv inn koden nedenfor i en modul.
Option Explicit Public vartext As String Sub PrivateScope() vartext = 'Varible is visible to all modules' MsgBoxvartext, , 'Result from Sub1' End Sub
Skriv inn koden nedenfor i den andre modulen.
Option Explicit Sub VarIsVisible() MsgBoxvartext, , 'Result from Sub2' End Sub
Resultatene er vist nedenfor
La oss vurdere et praktisk eksempel og forstå alt omfanget bedre.
Vedlagt er referansefilen for ovennevnte kode.
Statisk variabel
Vanligvis er verdien av variabelen bare bevart fra prosedyreanropet til slutten av prosedyren. Det bevarer ikke verdien når utførelsen av prosedyren er avsluttet.
For eksempel , i koden ovenfor, blir verdien av firstNo og secondNo fjernet så snart prosedyren avsluttes, neste gang hvis du utfører koden, får firstNo og secondNo den samme verdien som definert i koden.
Men statiske variabler er de som vil beholde verdien av variabelen selv etter utførelsen. En statisk variabel er bare tillatt inne i en sub eller en funksjon.
Vurder koden nedenfor med en ikke-statisk variabel.
Option Explicit Sub staticVariable() Dim count As Integer count = count + 1 Debug.Print count End Sub
Hver gang du treffer F5, får du bare 1 som et resultat.
La oss nå erklære variabelen som statisk.
Option Explicit Sub staticVariable() Static count As Integer count = count + 1 Debug.Print count End Sub
Hver gang du utfører koden (F5) vil resultatet ha en økt verdi for teller som 1,2,3 osv. Ettersom den statiske variabelen har beholdt verdien.
Merk: Statisk variabel beholder verdien til du trykker på Tilbakestill-knappen på verktøylinjen eller lukker arbeidsboken.
Konstant variabel
Som navnet indikerer, kan ikke verdien av disse variablene endres under gjennomføringen av programmet. Når en konstant er erklært, kan den ikke endres eller tilordnes en ny verdi.
Erklæring om en konstant kan gjøres innenfor en prosedyre eller på modulnivå (fremfor alle prosedyrer).
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
Hvis du prøver å endre den konstante verdien, vil en kompileringsfeil bli kastet.
Option Explicit Sub ChangeConstantVariable() Const SpeedLimitOfcar As Integer = 90 SpeedLimitOfcar = SpeedLimitOfcar + 10 MsgBox SpeedLimitOfcar End Sub
Vanlige spørsmål
Q # 1) Hvordan angir en offentlig variabel i VBA?
Svar: Offentlige variabler blir erklært før prosedyren starter. Det offentlige nøkkelordet må brukes mens deklarerer en variabel.
Offentlige Total_Marks Som Heltall
Q # 2) Hvilken type variabler kan ikke erklæres utenfor prosedyren?
Svar: Statiske variabler kan ikke erklæres utenfor prosedyren i VBA, og du får en kompileringsfeil.
Spørsmål 3) Hvordan deklarere en variabel i VBA?
Svar: Dimmt nøkkelord brukes til å erklære en variabel. Dim står for Dimension.
Demp variabelnavn som datatype
Q # 4) Hvordan tilordne en variabel verdi til en celle i VBA?
Svar: Du kan bruke Range-funksjonen.
var1 = 10
Område (“C1: C14”). Verdi = var1
Q # 5) Hva er variabler i VBA?
Svar: Variabler er som plassholdere for verdiene i datalagring. Variabler kan inneholde forskjellige varianter av verdier, og disse verdiene kan endres under utførelsen av koden. Hver variabel skal ha et navn, ved å bruke variabelnavnet, vil datamaskinen hente verdien som er tildelt for den variabelen.
Q # 6) Må du erklære en variabel i VBA?
Svar: Erklæringen er valgfri i VBA. Hvis du ikke erklærer en variabel og bruker den direkte i prosedyren, kalles den en implisitt erklæring. For å unngå feil i koden og for bedre lesbarhet, anbefales det å erklære en variabel eksplisitt.
Sp # 7) Hvordan erklærer jeg flere variabler i VBA?
Svar: Du kan erklære flere variabler i en erklæring. Du trenger bare å spesifisere variabelnavnet atskilt med komma i en Som-ledd.
beste gratis telefonkonferansetjenester
Dim FirstNo, SecondNo Som Integer
Du kan også spesifisere forskjellige variabler i en erklæring. Hver variabel tar datatypen som er spesifisert i As-setningen etter dens variabelnavn.
Dim a, b Som enkelt, c, d Som dobbelt, e Som heltal, f Som streng
Sp # 8) Når ville det ikke være noen forskjell mellom svak og privat i VBA?
Svar: Hvis du erklærer et omfang på privat modulnivå, er det ingen forskjell mellom å erklære en variabel som svak eller privat. Som standard er variabler deklarert med Ingen er begrenset som private. Men det anbefales å legge til privat for bedre lesbarhet.
Q # 9) Hva er en variabel på modulnivå?
Svar: Variabler på modulnivå kan være private eller offentlige. Private variabler er tilgjengelige for alle prosedyrene i den modulen og er ikke synlige for noen annen modul. Offentlige variabler er synlige for alle prosedyrene i alle modulene i et prosjekt.
Konklusjon
En variabel er avgjørende i ethvert programmeringsspråk. I denne opplæringen har vi sett hva som er variabler, hvordan deklareres og brukes i programmet. Vi undersøkte også Option Explicit-metoden, som tvinger implementeringen av den eksplisitte erklæringen.
Ulike typer variabelt omfang som hjelper brukerne med å bestemme hvilke deler av koden variabelen kan brukes ble diskutert. Vi lærte bruken av statiske variabler som hjelper til med å beholde verdien av variabelen og konstante variabler som hjelper til med å opprettholde verdien av variabelen uendret.
=> Besøk her for å lære VBA fra Scratch
Anbefalt lesing
- Excel VBA Tutorial - Introduksjon til VBA i Excel
- Excel VBA Array og Array Methods With Eksempler
- VBA-datatyper - Numeriske og ikke-numeriske datatyper i VBA
- Python-variabler
- Variabler i C ++
- Java-variabler og deres typer med eksempler
- C # Datatyper og variabler med eksempler
- VBScript-variabler: Hvordan deklarere og bruke variabler - VBScript Dim