Forstå variabler og konstanter i Excel-makroer

I denne artikkelen vil du lære hva konstanter og variabler er i makroer, hvor de kan brukes, og hva som er hovedforskjellen mellom ulike datatyper. Det vil også bli avslørt hvorfor konstanter er nødvendig, hvis du bare kan skrive en variabel og aldri endre den.

I likhet med andre programmeringsspråk kan data lagres i variabler eller konstanter (som begge også ofte refereres til som databeholdere). Dette er hovedforskjellen mellom disse konseptene. Førstnevnte kan endre seg avhengig av hva som skjer i programmet. I sin tur settes konstanter én gang og endrer ikke verdien.

Konstanter kan være nyttige hvis du trenger å bruke samme store verdi flere ganger. I stedet for å kopiere tallet, kan du ganske enkelt skrive navnet på konstanten. For eksempel kan du bruke konstanten "Pi" til å lagre Pi, som er en konstant verdi. Den er veldig stor, og hver gang er det ganske vanskelig å skrive den eller søke og kopiere den. Og så er det nok å skrive to tegn, og miljøet bruker automatisk ønsket nummer.

Excel-brukeren må deklarere variabler hvis han trenger å endre verdien som er lagret i dem fra tid til annen. Du kan for eksempel angi en variabel kalt sVAT_Rate, som vil lagre gjeldende MVA-sats for produktet. Hvis det endres, kan du raskt rette det. Dette er spesielt nyttig for de som driver forretninger i USA, hvor enkelte varer kanskje ikke er underlagt merverdiavgift i det hele tatt (og denne avgiften er også forskjellig fra stat til stat).

Datatyper

Hver databeholder kan være én av flere typer. Her er en tabell som beskriver standard typer behandlet informasjon. Det er mange av dem, og det kan virke for en nybegynner i utgangspunktet at de gjentar hverandre. Men dette er en illusorisk følelse. Les videre for å finne ut hvorfor det er så viktig å spesifisere riktig datatype.

Det anbefales ikke å bruke en datatype som tar opp mer plass i minnet for små tall. For eksempel, for tallet 1, er det tilstrekkelig å bruke Byte-typen. Dette vil ha en positiv effekt på ytelsen til den kjørbare modulen, spesielt på svake datamaskiner. Men det er viktig å ikke gå for langt her. Hvis du bruker en datatype som er for kompakt, kan det hende at en overdimensjonert verdi ikke får plass i den.

Erklære konstanter og variabler

Det frarådes på det sterkeste å bruke en databeholder uten først å deklarere det. Da kan det oppstå en rekke problemer, for å unngå at det er nødvendig å skrive noen små linjer med kode med oppregning av variabler eller konstanter.

For å deklarere en variabel brukes Dim-setningen. For eksempel slik:

Dim Variable_Name Som heltall

Variable_Name er navnet på variabelen. Deretter skrives As-operatoren, som indikerer datatypen. I stedet for strengene "Variable_Name" og "Integer", kan du sette inn ditt eget navn og datatype.

Konstanter kan også deklareres, men du må først spesifisere verdien. Et av alternativene er:

Const iMaxCount = 5000

I rettferdighet kan du i noen tilfeller klare deg uten å deklarere en variabel, men i dette tilfellet vil de automatisk bli tildelt typen Variant. Dette anbefales imidlertid ikke av følgende grunner:

  1. Variant behandles mye langsommere, og hvis det er mange slike variabler, kan informasjonsbehandlingen bremses betydelig på svake datamaskiner. Det ser ut til at disse sekundene vil avgjøre? Men hvis du må skrive et stort antall linjer med kode, og deretter kjøre det på svake datamaskiner (som fortsatt selges, gitt at moderne kontorpakker krever mye RAM), kan du stoppe arbeidet fullstendig. Det er tilfeller der dårlig gjennomtenkt skriving av makroer førte til frysing av smartbøker som har en liten mengde RAM og ikke er designet for å utføre komplekse oppgaver. 
  2. Trykkfeil i navn er tillatt, noe som kan forhindres ved å bruke Option Explicit-setningen, som lar deg finne en ikke-deklarert variabel, hvis en blir funnet. Dette er en enkel måte å oppdage feil på, siden den minste skrivefeil gjør at tolken ikke klarer å identifisere variabelen. Og hvis du slår på variabeldeklarasjonsmodus, vil tolken rett og slett ikke tillate deg å kjøre makroen hvis det blir funnet databeholdere som ikke ble deklarert helt i begynnelsen av modulen.
  3. Unngå feil forårsaket av variabelverdier som ikke samsvarer med datatypen. Normalt vil det å tildele en tekstverdi til en heltallsvariabel gi en feil. Ja, på den ene siden tildeles en generisk type uten erklæring, men hvis de er deklarert på forhånd, kan tilfeldige feil unngås.

Derfor, til tross for alt, anbefales det sterkt å deklarere alle variabler i Excel-makroer.

Det er en ting til å huske på når du deklarerer variabler. Det er mulig å ikke tilordne noen verdier til en variabel når du erklærer den, men i dette tilfellet får den en standardverdi. For eksempel:

  1. Linjer gjøres tomme.
  2. Tallene får verdien 0.
  3. Variabler av typen boolsk anses i utgangspunktet som falske.
  4. Standarddatoen er 30. desember 1899.

Du trenger for eksempel ikke å tilordne verdien 0 til en heltallsvariabel hvis ingen verdi tidligere er angitt. Hun inneholder allerede dette nummeret.

Alternativ Eksplisitt erklæring

Denne setningen lar deg deklarere alle variablene som brukes i VBA-koden og bestemme tilstedeværelsen av eventuelle ikke-deklarerte beholdere før koden kjøres. For å bruke denne funksjonen, skriv ganske enkelt en linje med Option Eksplisitt kode helt øverst i makrokoden.

Hvis du trenger å inkludere denne setningen i koden din hver gang, kan du gjøre det ved å bruke en spesiell innstilling i VBA-editoren. For å aktivere dette alternativet, må du:

  1. Gå til utviklingsmiljøet langs stien – Verktøy > Alternativer.
  2. I vinduet som åpnes etter dette, åpner du Editor-fanen.
  3. Og til slutt, merk av i boksen ved siden av elementet Krev variabeldeklarasjon.

Når du har fullført disse trinnene, klikker du på "OK"-knappen. 

Det er det, nå når du skriver hver ny makro, vil denne linjen automatisk settes inn øverst i koden.

Omfang av konstanter og variabler

Hver variabel eller konstant har bare et begrenset omfang. Det kommer an på hvor du deklarerer det.

Anta at vi har en funksjon Totalkostnad(), og den bruker variabelen sVAT_Rate. Avhengig av posisjonen i modulen, vil den ha et annet omfang:

Alternativ Eksplisitt

Dim sVAT_Rate As Single

Funksjon Total_Cost() Som dobbel

.

.

.

End Function

Hvis en variabel er deklarert på toppen av selve en modul, forplanter den seg gjennom denne modulen. Det vil si at den kan leses ved hver prosedyre.

Dessuten, hvis en av prosedyrene endret verdien til variabelen, vil den neste også lese denne korrigerte verdien. Men i andre moduler vil denne variabelen fortsatt ikke bli lest.

Alternativ Eksplisitt

Funksjon Total_Cost() Som dobbel

Dim sVAT_Rate As Single

   .

   .

   .

End Function

I dette tilfellet blir variabelen erklært inne i prosedyren, og tolken vil gi en feil hvis den brukes i en annen prosedyre.

Hvis du vil at variabelen skal leses av andre moduler, må du bruke nøkkelordet Public i stedet for nøkkelordet Dim. På samme måte kan du begrense omfanget av en variabel til bare den gjeldende modulen ved å bruke den offentlige uttalelsen, som er skrevet i stedet for ordet Dim.

Du kan stille inn omfanget av konstanter på lignende måte, men nøkkelordet her er skrevet sammen med Const-operatoren.

Her er en tabell med et godt eksempel på hvordan det fungerer med konstanter og variabler.

Alternativ Eksplisitt

Offentlig sVAT_Rate As Single

Public Const iMax_Count = 5000

I dette eksemplet kan du se hvordan det offentlige nøkkelordet brukes til å deklarere en variabel, og hva du trenger å skrive i Visual Basic-editoren for å erklære en offentlig konstant. Omfanget av disse verdibeholderne gjelder for alle moduler.
Alternativ Eksplisitt

Privat sVAT_Rate As Single

Private Const iMax_Count = 5000

Her deklareres variabler og konstanter ved hjelp av nøkkelordet Private. Dette betyr at de kun kan sees innenfor gjeldende modul, og prosedyrer i andre moduler kan ikke bruke dem.

Hvorfor konstanter og variabler er nødvendig

Bruken av konstanter og variabler lar deg øke graden av forståelighet av koden. Og hvis nybegynnere generelt ikke har spørsmål om hvorfor variabler er nødvendige, så er det mange uklarheter angående behovet for konstanter. Og dette spørsmålet virker ved første øyekast ganske logisk. Tross alt kan du deklarere en variabel én gang og aldri endre den igjen.

Svaret viser seg å være et sted i samme plan som når det gjelder bruk av datatyper som opptar stor plass i minnet. Hvis vi har å gjøre med et stort antall variabler, kan vi ved et uhell endre en eksisterende beholder. Hvis brukeren foreskriver at en viss verdi aldri vil endre seg, vil miljøet automatisk kontrollere dette.

Dette er spesielt viktig når makroen er skrevet av flere programmerere. Man vet kanskje at en eller annen variabel ikke bør endres. Og den andre er ikke det. Hvis du spesifiserer Const-operatøren, vil en annen utvikler vite at denne verdien ikke endres.

Eller hvis det er en konstant med ett navn, og variabelen har et annet, men lignende navn. Utvikleren kan ganske enkelt forvirre dem. For eksempel kalles en variabel som ikke trenger å endres Variable11, og en annen som kan redigeres heter Variable1. En person kan automatisk, når han skriver kode, ved et uhell hoppe over en ekstra enhet og ikke legge merke til det. Som et resultat vil beholderen for verdier bli endret, som ikke bør berøres.

Eller utvikleren selv kan glemme hvilke variabler han kan berøre og hvilke han ikke kan. Dette skjer ofte når koden er skrevet i flere uker, og størrelsen blir stor. I løpet av denne tiden er det veldig lett å glemme hva denne eller den variabelen betyr.

Ja, du kan klare deg med kommentarer i denne situasjonen, men er det ikke lettere å spesifisere ordet Const?

Konklusjoner

Variabler er en viktig komponent i makroprogrammering, som lar deg utføre komplekse operasjoner, fra beregninger til å informere brukeren om visse hendelser eller spesifisere spesifikke verdier i cellene i et regneark.

Konstanter bør brukes hvis utvikleren vet med sikkerhet at innholdet i disse beholderne ikke vil endre seg i fremtiden. Det anbefales å ikke bruke variabler i stedet, da det er mulig å gjøre en feil ved et uhell.

Legg igjen en kommentar