Forstå Excel VBA -datatyper (variabler og konstanter)

I Excel VBA skal du ofte bruge variabler og konstanter.

Når du arbejder med VBA, er en variabel en placering i din computers hukommelse, hvor du kan gemme data. Den type data, du kan gemme i en variabel, afhænger af datatypen for variablen.

For eksempel, hvis du vil gemme heltal i en variabel, ville din datatype være 'Integer', og hvis du vil gemme tekst, ville din datatype være 'String'.

Mere om datatyper senere i denne vejledning.

Mens en variabels værdi ændres, når koden er i gang, holder en konstant en værdi, der aldrig ændres. Som en god kodningspraksis bør du definere datatypen for begge - variabel og konstant.

Hvorfor bruge variabler i VBA?

Når du koder i VBA, skal du bruge variabler, som du kan bruge til at holde en værdi.

Fordelen ved at bruge en variabel er, at du kan ændre værdien af ​​variablen inden for koden og fortsætte med at bruge den i koden.

For eksempel er der en kode, der tilføjer de første 10 positive tal og derefter viser resultatet i en meddelelsesboks:

Sub AddFirstTenNumbers () Dim Var As Integer Dim i As Integer Dim k as Integer For i = 1 Til 10 k = k + i Næste i MsgBox k End Sub

Der er tre variabler i ovenstående kode - Var, jeg, og k.

Ovenstående kode bruger en For Next -sløjfe, hvor alle disse tre variabler ændres, når sløjferne er gennemført.

Nyttigheden af ​​en variabel ligger i, at den kan ændres, mens din kode er i gang.

Nedenfor er nogle regler, du skal huske på, når du navngiver variablerne i VBA:

  1. Du kan bruge alfabeter, tal og tegnsætninger, men det første tal skal være et alfabet.
  2. Du kan ikke bruge mellemrum eller punktum i variabelnavnet. Du kan dog bruge et understregningstegn til at gøre variabelnavnene mere læsbare (f.eks. Interest_Rate)
  3. Du kan ikke bruge specialtegn (#, $, %, & eller!) I variabelnavne
  4. VBA skelner ikke mellem sagen i variabelnavnet. Så 'Rente' og 'rente' er det samme for VBA. Du kan bruge mixed case til at gøre variablerne mere læselige.
  5. VBA har nogle reserverede navne, som du kan bruge til et variabelnavn. For eksempel kan du ikke bruge ordet 'Næste' som et variabelnavn, da det er et reserveret navn til For Next loop.
  6. Dit variabelnavn kan være op til 254 tegn langt.

Datatype af variabler

For at udnytte variabler bedst muligt er det en god praksis at angive datatypen for variablen.

Den datatype, du tildeler en variabel, afhænger af den datatype, du vil have, at variablen skal indeholde.

Nedenfor er en tabel, der viser alle de tilgængelige datatyper, du kan bruge i Excel VBA:

Datatype Bytes brugt Værdier
Byte 1 byte 0 til 255
Boolske 2 bytes Sandt eller falsk
Heltal 2 bytes -32.768 til 32.767
Langt (langt heltal) 4 bytes -2.147.483.648 til 2.147.483.647
Enkelt 4 bytes -3.402823E38 til -1.401298E -45 for negative værdier; 1.401298E-45 til 3.402823E38 for positive værdier
Dobbelt 8 bytes -1.79769313486231E308 til-4.94065645841247E-324 for negative værdier; 4.94065645841247E-324 til 1.79769313486232E308 for positive værdier
betalingsmiddel 8 bytes -922.337.203.685.477,5808 til 922.337.203.685.477,5807
Decimal 14 bytes +/- 79.228.162.514.264.337.593.543.950.335 uden decimal; +/- 7.9228162514264337593543950335 med 28 steder til højre for decimalet
Dato 8 bytes 1. januar 100 til 31. december 9999
Objekt 4 bytes Enhver objektreference
String (variabel længde) 10 bytes + strenglængde 0 til cirka 2 mia
String (fast længde) Strengens længde 1 til cirka 65.400
Variant (med tal) 16 bytes Enhver numerisk værdi op til intervallet for en dobbelt
Variant (med tegn) 22 bytes + strenglængde Samme område som for variabel længde streng
Brugerdefineret Varierer Området for hvert element er det samme som intervallet for dets datatype.

Når du angiver en datatype for en variabel i din kode, fortæller den VBA, hvordan denne variabel skal gemmes, og hvor meget plads der skal afsættes til den.

Hvis du f.eks. Skal bruge en variabel, der er beregnet til at indeholde månedstallet, kan du bruge BYTE -datatypen (som kan rumme værdier fra 0 til 255). Da månedstallet ikke kommer til at være over 12, fungerer dette fint og forbeholder også mindre hukommelse til denne variabel.

Tværtimod, hvis du har brug for en variabel til at gemme rækkenumrene i Excel, skal du bruge en datatype, der kan rumme et tal op til 1048756. Så det er bedst at bruge den lange datatype.

Angivelse af variable datatyper

Som en god kodningspraksis bør du angive datatypen for variabler (eller konstanter), når du skriver koden. Hvis du gør dette, sikrer du, at VBA kun tildeler den angivne hukommelse til variablen, og dette kan få din kode til at køre hurtigere.

Nedenfor er et eksempel, hvor jeg har erklæret forskellige datatyper for forskellige variabler:

Sub DeclaringVariables () Dim X As Integer Dim Email As String Dim FirstName As String Dim RowCount As Long Dim TodayDate As Date End Sub

For at deklarere en variabel datatype skal du bruge DIM -sætningen (som er forkortelse for Dimension).

I 'Dim X som heltal', Har jeg erklæret variablen X som heltal datatype.

Når jeg nu bruger det i min kode, ville VBA vide, at X kun kan indeholde heltal datatype.

Hvis jeg prøver at tildele en værdi til den, som ikke er et helt tal, får jeg en fejl (som vist herunder):

Bemærk: Du kan også vælge ikke at deklarere datatypen. I så fald overvejer VBA automatisk variablen for variantdatatypen. En variant datatype kan rumme enhver datatype. Selvom dette kan virke praktisk, er det ikke en god praksis at bruge variantdatatype. Det har en tendens til at optage mere hukommelse og kan få din VBA -kode til at køre langsommere.

Gør variabel erklæring obligatorisk (valgmulighed eksplicit)

Selvom du kan kode uden nogensinde at erklære variabler, er det en god praksis at gøre dette.

Bortset fra at gemme hukommelse og gøre din kode mere effektiv, har erklæring af variabler en anden stor fordel - det hjælper med at fange fejl forårsaget af stavede variabelnavne.

For at sikre, at du er tvunget til at erklære variabler, skal du tilføje følgende linje øverst i dit modul.

Mulighed eksplicit

Når du tilføjer 'Option Explicit', skal du deklarere alle variablerne, før koden køres. Hvis der er en variabel, der ikke er blevet deklareret, viser VBA en fejl.

Der er en enorm fordel ved at bruge Option Explicit.

Nogle gange kan du ende med at lave en skrivefejl og indtaste et variabelnavn, der er forkert.

Normalt er der ingen måde for VBA at vide, om det er en fejl eller er forsætlig. Når du bruger 'Option Explicit', ville VBA dog se det stavede variabelnavn som en ny variabel, der ikke er blevet deklareret og viser dig en fejl. Dette hjælper dig med at identificere disse stavede variabelnavne, som kan være ret svære at få øje på i en lang kode.

Nedenfor er et eksempel, hvor brugen af ​​'Option Explicit' identificerer fejlen (som ikke kunne have været fanget, hvis jeg ikke havde brugt 'Option Explicit')

Sub CommissionCalc () Dim CommissionRate As Double If Range ("A1"). Value> 10000 Then CommissionRate = 0.1 Else CommissionRtae = 0.05 End If MsgBox "Total Commission:" & Range ("A1"). Value * CommissionRate End Sub Sub

Bemærk, at jeg har stavet ordet 'CommissionRate' forkert i denne kode.

Hvis jeg ikke bruger Option Explicit, ville denne kode køre og give mig den forkerte samlede kommissionsværdi (hvis værdien i celle A1 er mindre end 10000).

Men hvis jeg bruger Option Explicit øverst i modulet, vil det ikke lade mig køre denne kode, før jeg enten retter det stavefejl eller erklærer det som en anden variabel. Det viser en fejl som vist herunder:

Selvom du kan indsætte linjen 'Option Explicit' hver gang du koder, er her trinene til at få den vist som standard:

  1. Klik på Værktøjer i værktøjslinjen VB Editor.
  2. Klik på Indstillinger.
  3. Klik på fanen Editor i dialogboksen Indstillinger.
  4. Marker indstillingen - "Kræv variabel erklæring".
  5. Klik på OK.

Når du har aktiveret denne mulighed, vil VBA automatisk tilføje linjen 'Eksplicit option' til den, når du åbner et nyt modul.

Bemærk: Denne indstilling påvirker kun ethvert modul, du opretter, efter at denne indstilling er aktiveret. Alle eksisterende moduler påvirkes ikke.

Variablenes omfang

Hidtil har vi set, hvordan man erklærer en variabel og tildeler datatyper til den.

I dette afsnit vil jeg dække omfanget af variabler, og hvordan du kan erklære en variabel til kun at blive brugt i en underprogram, i et helt modul eller i alle modulerne.

Omfanget af en variabel bestemmer, hvor variablen kan bruges i VBA,

Der er tre måder at omfatte en variabel i Excel VBA:

  1. Inden for en enkelt underprogram (lokale variabler)
  2. Inden for et modul (variabler på modulniveau)
  3. I alle moduler (Offentlige variabler)

Lad os se nærmere på hver af disse.

Inden for en enkelt underprogram (lokale variabler)

Når du erklærer en variabel inden for en underrutine/procedure, så er denne variabel kun tilgængelig for denne underprogram.

Du kan ikke bruge det i andre underrutiner i modulet.

Så snart underprogrammet slutter, bliver variablen slettet, og den hukommelse, der bruges af den, frigøres.

I eksemplet nedenfor erklæres variablerne inden for underrutinen og vil blive slettet, når denne underprogram slutter.

Inden for et modul (variabler på modulniveau)

Når du vil have en variabel til at være tilgængelig for alle procedurer i et modul, skal du deklarere den øverst på modulet (og ikke i nogen underprogram).

Når du har erklæret det øverst på modulet, kan du bruge denne variabel i alle procedurerne i det pågældende modul.

I ovenstående eksempel erklæres variablen 'i' øverst på modulet og kan bruges af alle modulerne.

Bemærk, at når underrutinen slutter, slettes modulniveauvariablerne ikke (den bevarer sin værdi).

Nedenfor er et eksempel, hvor jeg har to koder. Når jeg kører den første procedure og derefter kører den anden, bliver værdien af ​​'i' 30 (da den bærer værdien 10 fra den første procedure)

I alle moduler (offentlige variabler)

Hvis du vil have en variabel tilgængelig i hele proceduren i projektmappen, skal du deklarere den med det offentlige søgeord (i stedet for DIM).

Nedenstående kodelinje øverst i modulet ville gøre variablen 'CommissionRate' tilgængelig i alle modulerne i projektmappen.

 Offentlig kommissionspris som dobbelt

Du kan indsætte variabeldeklarationen (ved hjælp af det offentlige søgeord) i et hvilket som helst af modulerne (øverst før enhver procedure).

Statiske variabler (der bevarer værdien)

Når du arbejder med lokale variabler, så snart proceduren slutter, ville variablen miste sin værdi og ville blive slettet fra VBA's hukommelse.

Hvis du vil have variablen til at beholde værdien, skal du bruge Statisk nøgleord.

Lad mig først vise dig, hvad der sker i et normalt tilfælde.

I nedenstående kode, når jeg kører proceduren flere gange, viser den værdien 10 hver gang.

Underprocedure1 () Dim i As Integer i = i + 10 MsgBox i End Sub

Hvis jeg nu bruger det statiske søgeord i stedet for DIM og kører proceduren flere gange, vil det blive ved med at vise værdier i trin på 10. Dette sker, da variablen 'i' bevarer sin værdi og bruger den i beregningen.

Underprocedure1 () Statisk i Som heltal i = i + 10 MsgBox i End Sub

Deklaration af konstanter i Excel VBA

Selvom variabler kan ændre sig under kodeudførelsen, kan du bruge konstanter, hvis du vil have faste værdier.

En konstant giver dig mulighed for at tildele en værdi til en navngivet streng, som du kan bruge i din kode.

Fordelen ved at bruge en konstant er, at det gør det let at skrive og forstå kode, og giver dig også mulighed for at styre alle de faste værdier fra ét sted.

For eksempel, hvis du beregner provisioner, og provisionen er 10%, kan du oprette en konstant (CommissionRate) og tildele værdien 0,1 til den.

Hvis kommissionssatsen fremover ændres, skal du bare foretage ændringen ét sted i stedet for manuelt at ændre den i koden overalt.

Nedenfor er et kodeeksempel, hvor jeg har tildelt en værdi til konstanten:

Sub CalculateCommission () Dim CommissionValue As Double Const CommissionRate As Double = 0.1 CommissionValue = Range ("A1") * CommissionRate MsgBox CommissionValue End Sub

Følgende linje bruges til at erklære konstanten:

Const CommissionRate As Double = 0,1

Når du erklærer konstanter, skal du starte med søgeordet 'Konst', Efterfulgt af navnet på konstanten.

Bemærk, at jeg har angivet datatypen for konstanten som dobbelt i dette eksempel. Igen er det en god praksis at angive datatypen for at få din kode til at køre hurtigere og være mere effektiv.

Hvis du ikke erklærer datatypen, vil det blive betragtet som en variantdatatype.

Ligesom variabler kan konstanter også have omfang baseret på, hvor og hvordan disse erklæres:

  1. Inden for en enkelt underprogram (lokale konstanter): Disse er tilgængelige i den underprogram/procedure, hvor disse er erklæret. Når proceduren slutter, slettes disse konstanter fra systemets hukommelse.
  2. Inden for et modul (konstanter på modulniveau): Disse er angivet øverst på modulet (før enhver procedure). Disse er tilgængelige for alle procedurer i modulet.
  3. I alle moduler (Offentlige konstanter): Disse erklæres ved hjælp af søgeordet 'Offentlig' øverst i ethvert modul (før enhver procedure). Disse er tilgængelige for alle procedurer i alle modulerne.

Du kan også lide følgende VBA -øvelser:

  • Sådan optager du en makro i Excel
  • Arbejde med celler og områder i Excel VBA
  • Arbejde med regneark ved hjælp af Excel VBA
  • Arbejde med projektmapper i Excel VBA
  • VBA Events
  • Excel VBA -sløjfer
  • Sådan køres en makro i Excel
  • If Then Else Statement i Excel VBA.

Du vil bidrage til udviklingen af ​​hjemmesiden, at dele siden med dine venner

wave wave wave wave wave