VBA-skolen 4 – Arrays
I dette afsnit af VBA-skolen kan du lære om arrays. Det er en slags fler-dimensionel variabel, der blandt andet kan bruges til at opdele tekststrenge eller gemme flere værdier i en variabel.
I sidste afsnit lærte du om konstanter og variabler. Denne gang udvider vi det begreb med arrays, der giver variabler flere dimensioner. Hvis du ved hvad vektorer er i matematik er, kan man godt sige at vektorer svarer til arrays i VBA.
En array skal også erklæres som variabler. Dem erklærer du ved at sætte parentes () efter navnet. For eksempel kan du skrive:
Dim Navn() As Integer
Dette er altså et array af integer, med ukendt størrelse, dvs. du ved ikke hvor mange værdier der findes i arrayet endnu.
Men lad os nu sige du havde en tekststreng med tal, som for eksempel:
Dim tekst As String tekst = "1,2,3,4,5,6"
Nu skal vi så have sat alle disse talværdier ind i ovenstående array. Det gør vi ved at splitte tekststrengen hvert sted hvor der er et komma. Vi skriver koden:
Navn = Split(tekst, ",")
Split tager altså tekststrengen tekst og splitter hver gang der er et komma og propper resultatet ind i et array der hedder Navn. Det array får nu 6 pladser med hvert sit tal. For at henvise til hver værdi skrives arrayets navn med nummeret i parentes, idet det starter fra nummer 0. Dvs.
Navn(0) = 1 Navn(1) = 2 Navn(2) = 3 Navn(3) = 4 Navn(4) = 5 Navn(5) = 6
Så helt generelt laver du altså et array ved først at erklære det og herefter splitte en tekststreng der så deles op i et array.
Array med kendt antal pladser
Det array vi lige har lavet får antallet af pladser udfra hvor mange dele tekststrengen deles op i. Men du kan også erklære arrayet så det får et kendt antal pladser fra starten af:
Dim Navn(1 to 6) As Integer
Her angiver du altså at arrayet netop skal have 6 pladser, og du kan nu indsætte en værdi på hver plads.
Navn(0) = 1 Navn(1) = 2 Navn(2) = 3 Navn(3) = 4 Navn(4) = 5 Navn(5) = 6
Flerdimensionel array
Du kan også lave et array med mere end 1 dimension, som her. Et 2 dimensionelt array erklæres for eksempel på følgende måde:
Dim Navn(1 to 4, 1 to 3) As Integer
Det er altså et array, der ikke er bygget op som en vektor, men som en 2-dimensionel matrix eller array, der har størrelsen 4×3. Du indsætter værdier på samme måde
Navn(0,0) = 1 Navn(0,1) = 2 Navn(0,2) = 3 Navn(1,0) = 1 Navn(1,1) = 2 Navn(1,2) = 3 Navn(2,0) = 1 Navn(2,1) = 2 Navn(2,2) = 3 Navn(3,0) = 1 Navn(3,1) = 2 Navn(3,2) = 3
Det var lidt om arrays. Lad os lige se et eksempel.
Eksempel
I dette eksempel vil vi lave en tekststreng hvor vi skriver alle ugens dage adskilt af et mellemrum. Herefter laver vi et array der splitter tekststrengen udfra mellemrummet, og viser herefter en dialogboks der viser den tredje dag i ugen. Koden er her.
Public Sub Test() Dim dage As String dage = "Mandag Tirsdag Onsdag Torsdag Fredag Lørdag Søndag" Dim dagearr() As String dagearr = Split(dage, " ") MsgBox "Den tredje dag i ugen er " & dagearr(2) End Sub
Når vi skal splitte tekststrengen skriver vi først navnet på den tekststreng hvor dagene står (dage) og herefter et komma efterfulgt af det der skal splittes ved, som i dette tilfælde er et mellemrum. Et mellemrum skrives som ” “. Havde det været et linjeskift du ville splitte ved, ville koden være vbCrLf.
Bagefter laver vi en dialogboks der først viser noget tekst og herefter tager den tredje værdi i arrayet – som lægger på plads nummer 2, fordi indekset begynder med 0. Resultatet ser således ud:
Nu har du lært om arrays, der anvendes meget ofte når du skal bruge VBA. I næste afsnit skal vi se nærmere på VBA funktioner.