Förstå variabler och konstanter i Excel-makron

I den här artikeln får du lära dig vilka konstanter och variabler som finns i makron, var de kan användas och vad som är huvudskillnaden mellan olika datatyper. Det kommer också att avslöjas varför konstanter behövs, om du bara kan skriva en variabel och aldrig ändra den.

Liksom andra programmeringsspråk kan data lagras i variabler eller konstanter (som båda också ofta kallas databehållare). Detta är den största skillnaden mellan dessa begrepp. Det förra kan ändras beroende på vad som händer i programmet. I sin tur sätts konstanter en gång och ändrar inte deras värde.

Konstanter kan vara användbara om du behöver använda samma stora värde flera gånger. Istället för att kopiera numret kan du helt enkelt skriva konstantens namn. Till exempel kan du använda konstanten "Pi" för att lagra Pi, vilket är ett konstant värde. Det är väldigt stort, och varje gång är det ganska svårt att skriva det eller söka och kopiera det. Och så, det räcker med att skriva två tecken, och miljön använder automatiskt önskat nummer.

Excel-användaren måste deklarera variabler om han behöver ändra värdet som lagras i dem då och då. Du kan till exempel ställa in en variabel som heter sVAT_Rate, som lagrar den aktuella momssatsen för produkten. Om det ändras kan du snabbt rätta till det. Detta är särskilt användbart för dem som gör affärer i USA, där vissa varor kanske inte är momsbelagda alls (och denna skatt skiljer sig också från stat till stat).

Datatyper

Varje databehållare kan vara en av flera typer. Här är en tabell som beskriver standardtyperna av bearbetad information. Det finns många av dem, och det kan tyckas för en nybörjare från början som att de upprepar varandra. Men det här är en illusorisk känsla. Läs vidare för att lära dig varför det är så viktigt att ange rätt datatyp.

Det rekommenderas inte att använda en datatyp som tar upp mer plats i minnet för små nummer. Till exempel, för siffran 1, är det tillräckligt att använda Byte-typen. Detta kommer att ha en positiv effekt på prestandan för den körbara modulen, särskilt på svaga datorer. Men det gäller att inte gå för långt här. Om du använder en datatyp som är för kompakt kanske ett överdimensionerat värde inte får plats i den.

Deklarera konstanter och variabler

Att använda en databehållare utan att först deklarera det avråds starkt. Då kan ett antal problem uppstå, för att undvika vilka det är nödvändigt att skriva några små rader kod med uppräkning av variabler eller konstanter.

För att deklarera en variabel används Dim-satsen. Till exempel så här:

Dim Variable_Name Som heltal

Variable_Name är namnet på variabeln. Därefter skrivs As-operatorn, som indikerar datatypen. Istället för strängarna "Variable_Name" och "Integer", kan du infoga ditt eget namn och datatyp.

Konstanter kan också deklareras, men du måste först ange deras värde. Ett av alternativen är:

Const iMaxCount = 5000

I rättvisans namn, i vissa fall kan du göra utan att deklarera en variabel, men i det här fallet kommer de automatiskt att tilldelas typen Variant. Detta rekommenderas dock inte av följande skäl:

  1. Variant bearbetas mycket långsammare, och om det finns många sådana variabler kan informationsbehandlingen bromsas avsevärt på svaga datorer. Det verkar som att dessa sekunder kommer att avgöra? Men om du måste skriva ett stort antal rader kod, och sedan även köra det på svaga datorer (som fortfarande säljs, med tanke på att moderna kontorssviter kräver mycket RAM), kan du helt stoppa arbetet. Det finns fall då ogenomtänkt skrivning av makron ledde till frysning av smartbooks som har en liten mängd RAM och inte är designade för att utföra komplexa uppgifter. 
  2. Feltryck i namn är tillåtna, vilket kan förhindras genom att använda Option Explicit-satsen, som låter dig hitta en odeklarerad variabel, om en hittas. Detta är ett enkelt sätt att upptäcka fel, eftersom minsta stavfel gör att tolken inte kan identifiera variabeln. Och om du aktiverar variabeldeklarationsläget kommer tolken helt enkelt inte att tillåta dig att köra makrot om databehållare hittas som inte deklarerades i början av modulen.
  3. Undvik fel orsakade av variabelvärden som inte matchar datatypen. Normalt kommer ett felmeddelande att tilldelas ett textvärde till en heltalsvariabel. Ja, å ena sidan tilldelas en generisk typ utan deklaration, men om de deklareras i förväg kan slumpmässiga fel undvikas.

Därför, trots allt, rekommenderas det starkt att deklarera alla variabler i Excel-makron.

Det finns ytterligare en sak att tänka på när du deklarerar variabler. Det är möjligt att inte tilldela några värden till en variabel när den deklareras, men i det här fallet får den ett standardvärde. Till exempel:

  1. Rader görs tomma.
  2. Siffrorna får värdet 0.
  3. Variabler av typen Boolean anses initialt vara falska.
  4. Standarddatumet är 30 december 1899.

Till exempel behöver du inte tilldela värdet 0 till en heltalsvariabel om inget värde tidigare har angetts. Hon innehåller redan detta nummer.

Alternativ Explicit uttalande

Denna sats låter dig deklarera alla variabler som används i VBA-koden och bestämma förekomsten av eventuella odeklarerade behållare innan koden körs. För att använda den här funktionen skriver du helt enkelt en rad med Option Explicit kod längst upp i makrokoden.

Om du behöver inkludera detta uttalande i din kod varje gång kan du göra det med en speciell inställning i VBA-redigeraren. För att aktivera det här alternativet måste du:

  1. Gå till utvecklingsmiljön längs vägen – Verktyg > Alternativ.
  2. Öppna fliken Editor i fönstret som öppnas efter detta.
  3. Och slutligen, markera rutan bredvid objektet Kräv variabeldeklaration.

När du har slutfört dessa steg klickar du på knappen "OK". 

Det var allt, nu när du skriver varje nytt makro, kommer denna rad att infogas högst upp i koden automatiskt.

Omfattning av konstanter och variabler

Varje variabel eller konstant har bara en begränsad omfattning. Det beror på var du deklarerar det.

Antag att vi har en funktion Total kostnad(), och den använder variabeln sVAT_Rate. Beroende på positionen i modulen kommer den att ha en annan omfattning:

Explicit alternativ

Dim sVAT_Rate As Single

Funktion Total_Cost() Som dubbel

.

.

.

Änden Funktion

Om en variabel deklareras överst i själva modulen sprids den genom hela modulen. Det vill säga att den kan läsas av varje procedur.

Dessutom, om en av procedurerna ändrade värdet på variabeln, kommer nästa också att läsa detta korrigerade värde. Men i andra moduler kommer denna variabel fortfarande inte att läsas.

Explicit alternativ

Funktion Total_Cost() Som dubbel

Dim sVAT_Rate As Single

   .

   .

   .

Änden Funktion

I det här fallet deklareras variabeln i proceduren, och tolken kommer att skicka ett felmeddelande om den används i en annan procedur.

Om du vill att variabeln ska läsas av andra moduler måste du använda nyckelordet Public istället för nyckelordet Dim. På samma sätt kan du begränsa omfattningen av en variabel till endast den aktuella modulen genom att använda Public-satsen, som skrivs istället för ordet Dim.

Du kan ställa in omfattningen av konstanter på liknande sätt, men nyckelordet här skrivs tillsammans med Const-operatorn.

Här är en tabell med ett bra exempel på hur det fungerar med konstanter och variabler.

Explicit alternativ

Offentlig sVAT_Rate As Single

Public Const iMax_Count = 5000

I det här exemplet kan du se hur nyckelordet Public används för att deklarera en variabel och vad du behöver skriva i Visual Basic-redigeraren för att deklarera en offentlig konstant. Omfattningen av dessa värdebehållare gäller för alla moduler.
Explicit alternativ

Privat sVAT_Rate As Single

Private Const iMax_Count = 5000

Här deklareras variabler och konstanter med nyckelordet Privat. Detta innebär att de bara kan ses inom den aktuella modulen, och procedurer i andra moduler kan inte använda dem.

Varför konstanter och variabler behövs

Användningen av konstanter och variabler gör att du kan öka graden av förståelse av koden. Och om nybörjare i allmänhet inte har frågor om varför variabler behövs, så finns det många oklarheter angående behovet av konstanter. Och denna fråga verkar vid första anblicken ganska logisk. När allt kommer omkring kan du deklarera en variabel en gång och aldrig ändra den igen.

Svaret visar sig vara någonstans i samma plan som när det gäller användningen av datatyper som upptar ett stort utrymme i minnet. Om vi ​​har att göra med ett stort antal variabler kan vi av misstag ändra en befintlig behållare. Om användaren föreskriver att ett visst värde aldrig kommer att ändras, kommer miljön automatiskt att styra detta.

Detta är särskilt viktigt när makrot är skrivet av flera programmerare. Man kanske vet att någon variabel inte bör ändras. Och den andra är det inte. Om du anger Const-operatören kommer en annan utvecklare att veta att detta värde inte ändras.

Eller om det finns en konstant med ett namn och variabeln har ett annat men liknande namn. Utvecklaren kan helt enkelt förvirra dem. Till exempel kallas en variabel som inte behöver ändras Variable11, och en annan som kan redigeras heter Variable1. En person kan automatiskt, när han skriver kod, av misstag hoppa över en extra enhet och inte märka det. Som ett resultat kommer behållaren för värden att ändras, som inte bör vidröras.

Eller så kan utvecklaren själv glömma vilka variabler han kan röra och vilka han inte kan. Detta händer ofta när koden skrivs i flera veckor och dess storlek blir stor. Under denna tid är det väldigt lätt att glömma till och med vad den eller den variabeln betyder.

Ja, du kan klara dig med kommentarer i det här läget, men är det inte lättare att specificera ordet Const?

Slutsatser

Variabler är en viktig komponent i makroprogrammering, som låter dig utföra komplexa operationer, från beräkningar till att informera användaren om vissa händelser eller specificera specifika värden i cellerna i ett kalkylblad.

Konstanter bör användas om utvecklaren med säkerhet vet att innehållet i dessa behållare inte kommer att förändras i framtiden. Det rekommenderas att inte använda variabler istället, eftersom det är möjligt att råka göra ett misstag.

Kommentera uppropet