Deklarera variabler rätt i Excel

I dagens VBA-tips ska vi se på ett – inte alltför ovanligt – fel, ett fel som går att hitta i exempel på Internet och som jag haft tidigare kollegor som gjort i sitt dagliga arbete. Felet rör deklaration av variabler.

Därför deklarerar vi variabler i VBA-kod

Vi deklarerar variabler av två skäl:

  1. Snabbhet
  2. Säkerhet

Om vi vet att vi ska hantera ett tal är det bättre och säkrare att deklarera det som sådant. Om vi av misstag råkar tro att variabeln kan hålla en text så kommer vi att få ett felmeddelande.

Vi rekommenderar dessa Excelkurser:
www.infocell.se – lärarledda kvalitetskurser i Excel
www.officekurs.se – oslagbar e-Learning i Excel & Office-paketet

Deklarera rätt datatyp för din variabel

Det finns dock en typ av variabel som kallas variant. Den är långsammare än andra variabler, för den får sin typ först vid användning och kan även ändras från att hålla text till att hålla tal med mera. Det kan ibland vara praktiskt att använda varianter, till exempel när vi inte vet vilken typ av värde vi får från en källa. Men koden blir slöare.

Varianter deklareras på samma sätt som andra variabler

Dim X as Variant

Men om vi inte talar om vilken typ en variabel är, så blir den per automatik en variant, dvs Y nedan är en variant:

Dim Y

Det är i detta sammanhang många gör fel. I bilden ovan deklareras variablerna a – f. Det går alltså att deklarera flera variabler på samma rad. Många tror att detta är ett effektivare och lättare sätt att deklarera variabler, att skapa tre integer på ett svep: dim a, b, c as Integer.

Sanningen är dock att a och b blir varianter. Uttrycket ”as Integer” kommer bara att gälla variabeln som står precis innan. I Direktfönstret [Immediate Window] i exemplet ser vi att a, b samt e är varianter medan endast c och d blivit heltal. a, b och e skrivs i direktfönstret ut som Empty eftersom de ännu inte fått ett värde utan är varianter som kommer att få sin typ bestämd av sitt innehåll. Vid utskriften är de ännu tomma.

Exemplet visar att vi inte får deklarera variabler så som exemplet visar. Vi måste för varje variabel ange datatypen:

Dim a as Integer
Dim b as Integer
Dim c as Integer
Dim d as Integer
Dim e as Integer

Det finns flera olika variabler. I tabellen nedan ser du en lista på variabler.

datatyper variabler VBA Excel

Fler VBA-tips hittar du här

Associerad kurs: VBA & Makron

Du gillar kanske också...

Börja prenumerera på Excelbrevet

Ta del av tips & tricks i Excel och Office en gång i månaden helt kostnadsfritt.

Grattis du kommer nu att få Excelbrevet varje månad helt gratis!