Deklarera variabler i VBA-kod i Excel
Detta makrotips är av mer teknisk art, för dig som börjat skriva egen kod. Det gäller att deklarera variabler i din VBA-kod, det vill säga möjligheten att tala om för Excel vilka variabler du vill arbeta med och vad de skall vara av för typ.
Vi kan till exempel skriva:
Dim Summa as Double
Dim ValutaEnhet as String
Har vi deklarerat variablerna så kan Summa bara innehålla ett tal, eventuellt med decimaler (double), och ValutaEnhet kan bara innehålla en text. Koden kommer att generera ett fel om vi av misstag försöker lägga in en text i Summa. Att fel uppstår om fel typ av värden kommer in är en bra sak, eftersom det hjälper oss att upptäcka logiska fel och möjliga faror för felberäkningar. När det gäller ValutaEnhet uppstår inte fel om vi lägger in ett tal, eftersom texter även kan innehålla tal. Skyddet är alltså minst värt för texter, men fel på texter är inte lika allvarligt som fel i beräkningar.
Vi rekommenderar dessa Excelkurser:
www.infocell.se – lärarledda kvalitetskurser i Excel
www.officekurs.se – oslagbar e-kurser i Excel & Office-paketet
Ett vanligt misstag, som även förekommer i exempel på nätet är att deklarera flera variabler på en rad:
Dim Langd, Bredd, Hojd as Double
Excel klagar inte på raden och variablerna blir verkligen skapade och kan användas, till synes utan problem. I praktiken är felet lömskt. Det är bara Hojd som blir en double i exemplet ovan. De andra saknar angiven variabeltyp och blir då automatiskt av datatypen Variant, som kan vara vad som helst. Därmed förlorar vi det skydd som en korrekt deklaration skulle ge. Om vi vill deklarera de tre variablerna på samma rad, varför man nu skulle vilja det, så är den korrekta skrivningen:
Dim Langd As Double, Bredd As Double, Hojd As Double
Det är svårt att se vitsen med att deklarera variabler på samma rad. Det är snarare så att om varje variabel deklareras på en rad för sig blir det lättare att finna dess namn i listan.
av Dag Kihlman
dag.kihlman@infocell.se