vba variables option explicit vba
Denne vejledning forklarer, hvordan man deklarerer og bruger VBA-variabler. Lær også om eksplicit option, variabel rækkevidde, statiske og konstante variabler:
På en computer er alle dataværdierne gemt i en hukommelse eller computerlager. For at få adgang til disse værdier skal du angive et navn tilknyttet den værdi, der kaldes en variabel på programmeringssprog.
I denne vejledning lærer vi, hvordan man deklarerer og definerer en variabel sammen med de forskellige typer variabelt omfang og også udforsker statiske og konstante variabler i detaljer.
=> Tjek her for at se AZ af VBA-træningsvejledninger
Hvad du vil lære:
- VBA-variabler
- Konklusion
VBA-variabler
Variabler er som pladsholdere for værdierne i computerlagring. Variabler kan indeholde forskellige varianter af værdier, og disse værdier kan ændres under udførelsen af koden.
Hver variabel har et navn, der bruges til at få adgang til værdien. VBA har visse begrænsninger med hensyn til valg af navn.
Nedenfor er listen over begrænsninger:
- Navnet på din variabel må ikke være mere end 255 tegn.
- Et variabelnavn kan ikke starte med et tal.
- Du kan ikke starte med specialtegn som!, @, &,., # Eller ikke have mellemrum.
- Nøgleord betragtes ikke som et variabelnavn.
Compileren kaster en fejl, hvis du overtræder disse begrænsninger
top 10 musik downloadere til android
Eksempel:
Gyldige variabelnavne: varName, Result12, First_Number
Ugyldige variabelnavne: 123abc, #nummer, Sub, ca.123
Første tal (mellemrum er ikke tilladt mellem ord)
Erklæring om en VBA-variabel
Vi er nødt til at bruge Ingen nøgleord for at erklære en variabel. Der er to sektioner, mens deklarerer en variabel. 1St.er variabelnavnet og 2nder den type værdi, der skal gemmes i variablen, der kaldes datatype.
Syntaks: Dim VariableName Som DataType
Eksempel:
- Dim MyAge As Integer
- Dim My_Percentage som dobbelt
- Dæmp fuldt navn som streng
Her fortæller du eksplicit compileren, at min variabel kun skal gemme disse datatyper, og VBA sørger for at kaste en compiler Type mismatch-fejl, når en værdi, der er defineret for variablen, ikke matcher datatypen.
Eksempel:
Sub example1() Dim Total_Marks As Integer Total_Marks = “” MsgBox Total_Marks End Sub
Men hvis du er usikker på datatypen for variablen, giver VBA dig mulighed for at springe datatypen over. Den nedenstående syntaks er også gyldig.
Dim variabelnavn
Når du ikke erklærer datatypen for variablen, behandler VBA den som en Variant-datatype, og den er bundet til at acceptere enhver type dataintal som et heltal, streng, projektmappe osv. I det samme program er variantvariabler kan også acceptere strengværdi, heltal og enhver anden 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
Da Total_Marks er en variantvariabel, i modsætning til den forrige kode, kaster compileren ingen fejl som vist nedenfor.
Bemærk: Husk, at VBA giver dig mulighed for at bruge en variabel uden faktisk at erklære den.
Nedenstående eksempelkode giver også et ordentligt resultat. I dette tilfælde behandler VBA automatisk variablen som en Variant-datatype. Dette kaldes en implicit erklæring.
Sub VariantVariable() Total_Marks = 444 MsgBox Total_Marks End Sub
Fordele ved at erklære en variabel
- Let at fejle: Det er en god praksis at deklarere en variabel, før du bruger den. Det giver os en tidligere forståelse af fejlene som typefejl og typefejl, hvilket reducerer risikoen for at afvige fra programmets logik.
- Bedre læsbarhed: Som et team vil der være mange mennesker, der kigger på koden, og at erklære en variabel vil hjælpe alle med den type værdier, variablen forventes at tage, og også hjælpe brugerne med at indtaste passende inputværdier, mens de udfører programmet.
- Lagerplads: Hvis du ikke erklærer en variabel, behandler VBA den som en Variant-datatype, der tager den største plads i hukommelsen (16 byte til 22 byte) sammenlignet med andre datatyper. For eksempel, hvis du bruger en variabel af typen Byte, der bare tager 1 byte, og hvis du ikke erklærer, vil VBA ende med at reservere et rum på 16 byte og derved spilde hukommelsen.
Mulighed eksplicit
For at sikre, at alle variabler eksplicit erklæres, skal vi bruge den eksplicitte Option-sætning, inden vi bruger dem. Det skal bruges i begyndelsen af en hvilken som helst procedure i dette modul.
Lad os se et eksempel, der ikke bruger Option Explicit Statement.
Sub example3() Dim First_name As String First_name = ' abs' MsgBox Firt_Name End Sub
Udfør koden (tryk på F5 eller kør-knappen i værktøjslinjen), så får du en tom msg-boks.
Selvom du har deklareret variablen, endte du i et tomt resultatfelt på grund af skrivefejl i Msgbox Firt_Name. Option Explicit hjælper os med at fjerne sådanne fejl.
Lad os gentage den samme kode ved hjælp af Option Explicit. Indtast eksplicit option, inden proceduren starter.
Option Explicit Sub VarientVariable() Dim First_name As String First_name = ' abs' MsgBox Firt_Name End Sub
Hvis du nu udfører koden (tryk på F5 eller Run-knappen i værktøjslinjen), og du ender med at få en compiler-fejl.
Du kan få VBA til at tilføje Mulighed eksplicit automatisk.
I VB Editor Gå til Værktøjer -> Indstillinger -> Vælg 'Kræv variabel erklæring'.
Nu Mulighed eksplicit tilføjes automatisk hver gang du indsætter et nyt modul eller optager en ny makro.
Bemærk: Option Explicit føjes ikke til den eksisterende VBA-kode. Du skal tilføje det manuelt, hvis det kræves.
Tildeling af en værdi til variabel
Værdier kan tildeles variabler ved hjælp af lig med symbolet (=). Hvis du henviser til en celle i Excel, skal du bruge rækkefunktionerne.
Se koden nedenfor.
Sub varValue() Dim var1 As Integer var1 = 10 Range('C1:C14').Value = var1 MsgBox var1 End Sub
I ovenstående eksempel er var1 en variabel, der gemmer værdien 10 direkte ved hjælp af (=), og Range-funktionen hjælper med at indtaste var1-værdi, som er 10 i Excel-celle C1 til C14.
Omfanget af en variabel
Hver variabel i et program har et defineret omfang. Dette omfang fortæller programmet de områder, hvor variablen er synlig, dvs. modulet eller funktionen, der kan eller ikke kan bruge variablen.
VBA har 3 typer anvendelsesområde defineret for variablen.
- Procedure-niveau rækkevidde
- Privat modul-niveau omfang
- Offentligt modulniveau
Procedure-niveau Anvendelsesområde
De variabler, der er defineret i en procedure, dvs. i under- eller funktion, kan kun bruge dem. Disse er ikke synlige for nogen anden procedure.
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 udfører ovenstående kode, returnerer msgbox for det første Sub et korrekt resultat, men for det andet Sub kastes en Compiler-fejl. Fordi toppunktvariablen kun er synlig for 1St.sub og ikke til 2nd. Da vi har brugt Option Explicit, får vi en compiler-fejl for ikke at definere variabler i 2ndunder


Privat modul-niveau rækkevidde
Disse variabler er tilgængelige for alle procedurer i det definerede modul. Som standard er variablerne deklareret med Ingen er omfattet som private. Men det anbefales at tilføje privat for bedre læsbarhed.
Lad os overveje det samme eksempel, men vi vil erklære variablen uden for 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 udførelse vil du se, at begge procedurer returnerer de korrekte resultater uden nogen fejl. For en klar forståelse har vi tilføjet den rigtige titel i msgbox.
Offentligt modulniveau
Disse typer variabler er synlige for alle procedurer og i alle moduler i et projekt. Indsæt 2 moduler. (Højreklik på et ark, og indsæt -> moduler).
Indtast nedenstående kode i et modul.
Option Explicit Public vartext As String Sub PrivateScope() vartext = 'Varible is visible to all modules' MsgBoxvartext, , 'Result from Sub1' End Sub
Indtast nedenstående kode i det andet modul.
Option Explicit Sub VarIsVisible() MsgBoxvartext, , 'Result from Sub2' End Sub
Resultaterne er vist nedenfor
Lad os overveje et praktisk eksempel og forstå alt omfanget bedre.
Vedhæftet er referencefilen for ovenstående kode.
Statisk variabel
Normalt bevares værdien af variablen kun fra procedurekaldet til procedurens afslutning. Det bevarer ikke værdien, når udførelsen af proceduren slutter.
For eksempel , i ovenstående kode fjernes værdien af firstNo og secondNo, så snart proceduren slutter, næste gang hvis du udfører koden, får firstNo og secondNo den samme værdi som defineret i koden.
Men statiske variabler er dem, der bevarer værdien af variablen, selv efter udførelsen. En statisk variabel er kun tilladt inde i en sub eller en funktion.
Overvej nedenstående kode med en ikke-statisk variabel.
Option Explicit Sub staticVariable() Dim count As Integer count = count + 1 Debug.Print count End Sub
Hver gang du rammer F5, får du kun 1 som et resultat.
Lad os nu erklære variablen som statisk.
Option Explicit Sub staticVariable() Static count As Integer count = count + 1 Debug.Print count End Sub
Hver gang du udfører koden (F5), får resultatet en øget værdi for tælling som 1,2,3 osv., Da den statiske variabel har bevaret sin værdi.
Bemærk: Statisk variabel bevarer værdien, indtil du trykker på knappen Nulstil på værktøjslinjen eller lukker projektmappen.
Konstant variabel
Som navnet antyder, kan værdien af disse variabler ikke ændres under udførelsen af programmet. Når en konstant er erklæret, kan den ikke ændres eller tildeles en ny værdi.
Erklæring om en konstant kan udføres inden for en procedure eller på modulniveau (frem for alt procedurer).
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 forsøger at ændre den konstante værdi, kastes en kompileringsfejl.
Option Explicit Sub ChangeConstantVariable() Const SpeedLimitOfcar As Integer = 90 SpeedLimitOfcar = SpeedLimitOfcar + 10 MsgBox SpeedLimitOfcar End Sub
Ofte stillede spørgsmål
Q # 1) Hvordan indstilles en offentlig variabel i VBA?
Svar: Offentlige variabler erklæres inden starten af en procedure. Det offentlige nøgleord skal bruges, mens deklarerer en variabel.
Offentlige Total_Marks som heltal
Q # 2) Hvilken type variabler kan ikke erklæres uden for proceduren?
Svar: Statiske variabler kan ikke erklæres uden for proceduren i VBA, og du får en kompileringsfejl.
Q # 3) Hvordan deklareres en variabel i VBA?
Svar: Dim nøgleord bruges til at erklære en variabel. Dim står for Dimension.
Dim variabelnavn som datatype
Spørgsmål nr. 4) Hvordan tildeles en variabel værdi til en celle i VBA?
Svar: Du kan bruge Range-funktionen.
var1 = 10
Område (“C1: C14”). Værdi = var1
Spørgsmål nr. 5) Hvad er variabler i VBA?
Svar: Variabler er som pladsholdere for værdierne i computerlagring. Variabler kan indeholde forskellige varianter af værdier, og disse værdier kan ændres under udførelsen af koden. Hver variabel skal have et navn, ved hjælp af variabelnavnet, henter computeren den værdi, der er tildelt den pågældende variabel.
Q # 6) Er du nødt til at erklære en variabel i VBA?
Svar: Erklæringen er valgfri i VBA. Hvis du ikke erklærer en variabel og bruger den direkte i proceduren, kaldes den en implicit erklæring. For at undgå fejl i koden og for bedre læsbarhed anbefales det at erklære en variabel eksplicit.
Spørgsmål nr. 7) Hvordan erklærer jeg flere variabler i VBA?
Svar: Du kan erklære flere variabler i en erklæring. Du skal bare angive variabelnavnet adskilt af kommaer i en Som-klausul.
Dim FirstNo, SecondNo Som Integer
Du kan også angive forskellige variabler i en erklæring. Hver variabel tager den datatype, der er angivet i Som-klausulen, efter dens variabelnavndel.
Dim a, b Som enkelt, c, d Som dobbelt, e Som heltal, f Som streng
Q # 8) Hvornår ville der ikke være nogen forskel mellem svag og privat i VBA?
Svar: Hvis du erklærer et omfang på privat modulniveau, er der ingen forskel mellem at erklære en variabel som svag eller privat. Som standard erklæres variabler med Ingen er omfattet som private. Men det anbefales at tilføje privat for bedre læsbarhed.
Q # 9) Hvad er en variabel på modulniveau?
Svar: Variabler på modulniveau kan være private eller offentlige. Private variabler er tilgængelige for alle procedurerne i dette modul og er ikke synlige for noget andet modul. Offentlige variabler er synlige for alle procedurer i alle modulerne i et projekt.
Konklusion
En variabel er afgørende i ethvert programmeringssprog. I denne vejledning har vi set, hvad der er variabler, hvordan man erklærer og bruger dem i programmet. Vi undersøgte også Option Explicit-metoden, som tvinger implementeringen af den eksplicitte erklæring.
Forskellige typer variabelt omfang, der hjælper brugerne med at bestemme, hvilke dele af koden variablen kan bruges, blev diskuteret. Vi lærte brugen af statiske variabler, der hjælper med at bevare værdien af variablen og konstante variabler, der hjælper med at opretholde værdien af variablen uændret.
=> Besøg her for at lære VBA fra bunden
Anbefalet læsning
- Excel VBA-vejledning - Introduktion til VBA i Excel
- Excel VBA Array og Array Methods med 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: Sådan erklæres og bruges variabler - VBScript Dim