Forstå variabler og konstanter i Excel-makroer

I denne artikel lærer du, hvad konstanter og variabler er i makroer, hvor de kan bruges, og hvad der er den væsentligste forskel mellem forskellige datatyper. Det vil også blive afsløret, hvorfor konstanter er nødvendige, hvis du bare kan skrive en variabel og aldrig ændre den.

Ligesom andre programmeringssprog kan data lagres i variabler eller konstanter (som begge også ofte omtales som databeholdere). Dette er hovedforskellen mellem disse begreber. Førstnævnte kan ændre sig afhængigt af, hvad der sker i programmet. Til gengæld sættes konstanter én gang og ændrer ikke deres værdi.

Konstanter kan være nyttige, hvis du skal bruge den samme store værdi flere gange. I stedet for at kopiere tallet kan du blot skrive navnet på konstanten. For eksempel kan du bruge konstanten "Pi" til at gemme Pi, som er en konstant værdi. Det er meget stort, og hver gang er det ret svært at skrive det eller søge og kopiere det. Og så er det nok at skrive to tegn, og miljøet bruger automatisk det ønskede nummer.

Excel-brugeren skal deklarere variabler, hvis han fra tid til anden skal ændre værdien, der er gemt i dem. For eksempel kan du indstille en variabel kaldet sVAT_Rate, som gemmer den aktuelle momssats for produktet. Hvis det ændrer sig, kan du hurtigt rette det. Dette er især nyttigt for dem, der driver forretning i USA, hvor nogle varer muligvis slet ikke er momspligtige (og denne skat er også forskellig fra stat til stat).

Datatyper

Hver databeholder kan være en af ​​flere typer. Her er en tabel, der beskriver standardtyperne af behandlet information. Der er mange af dem, og det kan virke for en nybegynder i første omgang, at de gentager hinanden. Men det er en illusorisk følelse. Læs videre for at lære, hvorfor det er så vigtigt at angive den korrekte datatype.

Det anbefales ikke at bruge en datatype, der fylder mere i hukommelsen for små tal. For eksempel for tallet 1 er det tilstrækkeligt at bruge Byte-typen. Dette vil have en positiv effekt på ydeevnen af ​​det eksekverbare modul, især på svage computere. Men det er vigtigt ikke at gå for langt her. Hvis du bruger en datatype, der er for kompakt, kan en overdimensioneret værdi muligvis ikke passe ind i den.

Erklæring af konstanter og variabler

Det frarådes på det kraftigste at bruge en databeholder uden først at erklære den. Så kan der opstå en række problemer, for at undgå hvilke det er nødvendigt at skrive et par små linjer kode med opregning af variable eller konstanter.

For at erklære en variabel bruges Dim-sætningen. For eksempel sådan her:

Dim Variable_Name Som heltal

Variable_Name er navnet på variablen. Dernæst skrives As-operatoren, der angiver datatypen. I stedet for strengene "Variable_Name" og "Integer", kan du indsætte dit eget navn og datatype.

Konstanter kan også erklæres, men du skal først angive deres værdi. En af mulighederne er:

Const iMaxCount = 5000

Retfærdigvis kan du i nogle tilfælde undvære at erklære en variabel, men i dette tilfælde vil de automatisk blive tildelt typen Variant. Dette anbefales dog ikke af følgende årsager:

  1. Variant behandles meget langsommere, og hvis der er mange sådanne variabler, kan informationsbehandlingen bremses betydeligt på svage computere. Det ser ud til, at de sekunder vil afgøre? Men hvis du skal skrive et stort antal linjer kode, og så også køre det på svage computere (som stadig sælges, givet at moderne kontorpakker kræver meget RAM), kan du helt stoppe arbejdet. Der er tilfælde, hvor dårligt udtænkt skrivning af makroer førte til frysning af smartbooks, der har en lille mængde RAM og ikke er designet til at udføre komplekse opgaver. 
  2. Trykfejl i navne er tilladt, hvilket kan forhindres ved at bruge Option Explicit-sætningen, som giver dig mulighed for at finde en ikke-deklareret variabel, hvis en findes. Dette er en nem måde at opdage fejl, da den mindste tastefejl gør, at tolken ikke er i stand til at identificere variablen. Og hvis du slår variabeldeklarationstilstanden til, vil fortolkeren simpelthen ikke tillade dig at køre makroen, hvis der findes databeholdere, som ikke blev erklæret helt i begyndelsen af ​​modulet.
  3. Undgå fejl forårsaget af variabelværdier, der ikke matcher datatypen. Normalt vil tildeling af en tekstværdi til en heltalsvariabel give en fejl. Ja, på den ene side tildeles en generisk type uden deklaration, men hvis de er deklareret på forhånd, så kan tilfældige fejl undgås.

På trods af alt anbefales det derfor stærkt at erklære alle variabler i Excel-makroer.

Der er endnu en ting at huske på, når du deklarerer variabler. Det er muligt ikke at tildele nogen værdier til en variabel, når den erklæres, men i dette tilfælde får den en standardværdi. For eksempel:

  1. Linjer gøres tomme.
  2. Tallene får værdien 0.
  3. Variabler af typen Boolean betragtes oprindeligt som falske.
  4. Standarddatoen er den 30. december 1899.

For eksempel behøver du ikke at tildele værdien 0 til en heltalsvariabel, hvis der ikke tidligere er angivet en værdi. Hun indeholder allerede dette nummer.

Mulighed Eksplicit erklæring

Denne sætning giver dig mulighed for at erklære alle de variabler, der bruges i VBA-koden, og bestemme tilstedeværelsen af ​​eventuelle ikke-erklærede containere, før koden køres. For at bruge denne funktion skal du blot skrive en linje med Option Eksplicit kode helt øverst i makrokoden.

Hvis du skal inkludere denne erklæring i din kode hver gang, kan du gøre det ved at bruge en speciel indstilling i VBA-editoren. For at aktivere denne mulighed skal du:

  1. Gå til udviklingsmiljøet langs stien – Værktøjer > Indstillinger.
  2. I vinduet, der åbnes efter dette, skal du åbne fanen Editor.
  3. Og til sidst skal du markere afkrydsningsfeltet ud for elementet Kræv variabel deklaration.

Når du har gennemført disse trin, skal du klikke på knappen "OK". 

Det er det, nu når du skriver hver ny makro, vil denne linje automatisk blive indsat øverst i koden.

Omfang af konstanter og variabler

Hver variabel eller konstant har kun et begrænset omfang. Det afhænger af, hvor du deklarerer det.

Antag, at vi har en funktion Udgifter i alt(), og den bruger variablen sVAT_Rate. Afhængigt af stillingen i modulet vil det have et andet omfang:

Mulighed for eksplicit

Dæmp sVAT_Rate As Single

Funktion Total_Cost() Som Dobbelt

.

.

.

End Function

Hvis en variabel er erklæret øverst i selve et modul, forplanter den sig gennem det pågældende modul. Det vil sige, at den kan læses ved enhver procedure.

Desuden, hvis en af ​​procedurerne ændrede værdien af ​​variablen, så vil den næste også læse denne korrigerede værdi. Men i andre moduler vil denne variabel stadig ikke blive læst.

Mulighed for eksplicit

Funktion Total_Cost() Som Dobbelt

Dæmp sVAT_Rate As Single

   .

   .

   .

End Function

I dette tilfælde er variablen erklæret inde i proceduren, og fortolkeren vil kaste en fejl, hvis den bruges i en anden procedure.

Hvis du ønsker at variablen skal læses af andre moduler, skal du bruge det offentlige nøgleord i stedet for nøgleordet Dim. På samme måde kan du begrænse omfanget af en variabel til kun det aktuelle modul ved at bruge den offentlige erklæring, som er skrevet i stedet for ordet Dim.

Du kan indstille omfanget af konstanter på lignende måde, men nøgleordet her er skrevet sammen med Const-operatoren.

Her er en tabel med et godt eksempel på, hvordan det fungerer med konstanter og variable.

Mulighed for eksplicit

Offentlig sVAT_Rate As Single

Public Const iMax_Count = 5000

I dette eksempel kan du se, hvordan det offentlige nøgleord bruges til at erklære en variabel, og hvad du skal skrive i Visual Basic-editoren for at erklære en offentlig konstant. Omfanget af disse værdibeholdere gælder for alle moduler.
Mulighed for eksplicit

Privat sVAT_Rate As Single

Private Const iMax_Count = 5000

Her deklareres variabler og konstanter ved hjælp af nøgleordet Private. Det betyder, at de kun kan ses inden for det aktuelle modul, og procedurer i andre moduler kan ikke bruge dem.

Hvorfor konstanter og variable er nødvendige

Brugen af ​​konstanter og variabler giver dig mulighed for at øge graden af ​​forståelighed af koden. Og hvis begyndere generelt ikke har spørgsmål om, hvorfor variabler er nødvendige, så er der mange uklarheder med hensyn til behovet for konstanter. Og dette spørgsmål virker ved første øjekast ret logisk. Når alt kommer til alt, kan du erklære en variabel én gang og aldrig ændre den igen.

Svaret viser sig at være et sted i samme plan som med hensyn til brugen af ​​datatyper, der optager en stor plads i hukommelsen. Hvis vi har at gøre med et stort antal variabler, kan vi ved et uheld ændre en eksisterende container. Hvis brugeren foreskriver, at en bestemt værdi aldrig vil ændre sig, så vil miljøet automatisk styre dette.

Dette er især vigtigt, når makroen er skrevet af flere programmører. Man ved måske, at en eller anden variabel ikke bør ændre sig. Og den anden er ikke. Hvis du angiver Const-operatøren, vil en anden udvikler vide, at denne værdi ikke ændres.

Eller hvis der er en konstant med ét navn, og variablen har et andet, men lignende navn. Udvikleren kan simpelthen forvirre dem. For eksempel hedder en variabel, der ikke skal ændres, Variable11, og en anden, der kan redigeres, hedder Variable1. En person kan automatisk, når han skriver kode, ved et uheld springe en ekstra enhed over og ikke bemærke det. Som et resultat vil beholderen for værdier blive ændret, som ikke bør røres.

Eller udvikleren selv glemmer, hvilke variabler han kan røre ved, og hvilke han ikke kan. Dette sker ofte, når koden er skrevet i flere uger, og dens størrelse bliver stor. I løbet af denne tid er det meget nemt at glemme, hvad denne eller hin variabel betyder.

Ja, du kan godt klare dig med kommentarer i denne situation, men er det ikke nemmere at specificere ordet Const?

konklusioner

Variabler er en væsentlig komponent i makroprogrammering, som giver dig mulighed for at udføre komplekse operationer, fra beregninger til at informere brugeren om bestemte hændelser eller specificere specifikke værdier i cellerne i et regneark.

Konstanter bør bruges, hvis udvikleren ved med sikkerhed, at indholdet af disse beholdere ikke vil ændre sig i fremtiden. Det anbefales ikke at bruge variable i stedet, da det er muligt ved et uheld at lave en fejl.

Giv en kommentar