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:
- Snabbhet
- 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-kurser 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.
Associerad kurs: VBA & Makron