De fleste programmeringssprog understøtter arrays, inklusive VBA. Et array er en gruppe af variable, der deler et navn. Du henviser til en specifik variabel i arrayet ved at bruge arraynavnet og et indeksnummer i parentes. For eksempel kan du definere en matrix af 12 strengvariabler til at indeholde navnene på årets måneder. Hvis du navngiver matrixen MonthNames , kan du henvise til det første element i matrixen som MonthNames (1), det andet element som MonthNames (2) og så videre.
Erklærer arrays
Før du kan bruge et array, skal du deklarere det. Ingen undtagelser. I modsætning til normale variabler er VBA meget streng med hensyn til denne regel. Du erklærer et array med en Dim eller Public statement, ligesom du erklærer en regulær variabel. Du skal dog også angive antallet af elementer i arrayet. Du gør dette ved at angive det første indeksnummer, nøgleordet Til og det sidste indeksnummer - alt sammen inden for parentes. Følgende eksempel viser, hvordan man erklærer en matrix med 100 heltal:
Dim MyArray(1 til 100) Som heltal
Når du erklærer et array, kan du vælge kun at angive det øverste indeks. Hvis du udelader det nederste indeks, antager VBA, at det er 0. Derfor erklærer begge følgende udsagn det samme 101-element array:
Dim MyArray (0 til 100) Som heltal
Dim MyArray (100) Som heltal
Hvis du vil have VBA til at antage, at 1 (i stedet for 0) er det lavere indeks for dine arrays, skal du inkludere følgende erklæring i afsnittet Deklarationer øverst i dit modul:
Mulighedsgrundlag 1
Denne erklæring tvinger VBA til at bruge 1 som det første indeksnummer for arrays, der kun erklærer det øverste indeks. Hvis denne sætning er til stede, er følgende sætninger identiske, og begge erklærer en 100-element matrix:
Dim MyArray (1 til 100) Som heltal
Dim MyArray (100) Som heltal
Multidimensionelle arrays
De arrays, der er oprettet i de foregående eksempler, er alle endimensionelle arrays. Tænk på endimensionelle arrays som en enkelt linje af værdier. Arrays, du opretter i VBA, kan have så mange som 60 dimensioner - selvom du sjældent har brug for mere end to eller tre dimensioner i et array. Følgende eksempel erklærer et 81-heltals-array med to dimensioner:
Dim MyArray (1 til 9, 1 til 9) som heltal
Du kan tænke på denne matrix som en matrix på 9 x 9 - perfekt til at gemme alle tal i et Sudoku-puslespil.
For at henvise til et specifikt element i dette array skal du angive to indeksnumre (svarende til dets "række" og dets "kolonne" i matrixen). Følgende eksempel viser, hvordan du kan tildele en værdi til et element i dette array:
MyArray (3, 4)= 125
Denne sætning tildeler en værdi til et enkelt element i arrayet. Hvis du tænker på matrixen i form af en 9 x 9 matrix, tildeler dette 125 til elementet placeret i den tredje række og fjerde kolonne i matrixen.
Sådan erklærer du et tredimensionelt array med 1.000 elementer:
Dim My3DArray (1 til 10, 1 til 10, 1 til 10) som heltal
Du kan tænke på et tredimensionelt array som en terning. Det er sværere at visualisere en række af mere end tre dimensioner.
Dynamiske arrays
Du kan også oprette dynamiske arrays. Et dynamisk array har ikke et forudindstillet antal elementer. Erklære et dynamisk array med et tomt sæt parenteser:
Dim MyArray () Som heltal
Før du kan bruge dette array, skal du bruge ReDim-sætningen til at fortælle VBA, hvor mange elementer arrayet har. Normalt bestemmes antallet af elementer i arrayet, mens din kode kører. Du kan bruge ReDim-sætningen et vilkårligt antal gange og ændre arrayets størrelse så ofte som nødvendigt. Følgende eksempel viser, hvordan man ændrer antallet af elementer i et dynamisk array. Det antager, at NumElements-variablen indeholder en værdi, som din kode har beregnet.
ReDim MyArray (1 til NumElements)
Når du omdimensionerer et array ved at bruge ReDim, sletter du alle værdier, der i øjeblikket er gemt i array-elementerne. Du kan undgå at ødelægge de gamle værdier ved at bruge nøgleordet Bevar. Følgende eksempel viser, hvordan du kan bevare et arrays værdier, når du redimensionerer arrayet:
ReDim Preserve MyArray (1 til NumElements)
Hvis MyArray i øjeblikket har ti elementer, og du udfører den foregående sætning med NumElements svarende til 12, forbliver de første ti elementer intakte, og arrayet har plads til to yderligere elementer (op til antallet indeholdt i variablen NumElements). Hvis NumElements dog er lig med 7, bibeholdes de første syv elementer, men de resterende tre elementer udgår.