De flesta programmeringsspråk stöder arrayer, inklusive VBA. En array är en grupp av variabler som delar ett namn. Du refererar till en specifik variabel i arrayen genom att använda arraynamnet och ett indexnummer inom parentes. Du kan till exempel definiera en matris med 12 strängvariabler för att innehålla namnen på årets månader. Om du namnger arrayen MonthNames , kan du referera till det första elementet i arrayen som MonthNames (1), det andra elementet som MonthNames (2) och så vidare.
Deklarerar arrayer
Innan du kan använda en array måste du deklarera den. Inga undantag. Till skillnad från normala variabler är VBA mycket strikt när det gäller denna regel. Du deklarerar en array med en Dim eller Public-sats, precis som du deklarerar en vanlig variabel. Men du måste också ange antalet element i arrayen. Du gör detta genom att ange det första indexnumret, nyckelordet Till och det sista indexnumret - allt inom parentes. Följande exempel visar hur man deklarerar en matris med 100 heltal:
Dim MyArray(1 Till 100) Som heltal
När du deklarerar en array kan du välja att endast ange det övre indexet. Om du utelämnar det lägre indexet antar VBA att det är 0. Därför deklarerar båda följande satser samma 101-elements array:
Dim MyArray (0 Till 100) Som heltal
Dim MyArray (100) Som heltal
Om du vill att VBA ska anta att 1 (snarare än 0) är det lägre indexet för dina arrayer, inkludera följande uttalande i avsnittet Deklarationer högst upp i din modul:
Alternativ Bas 1
Denna sats tvingar VBA att använda 1 som första indexnummer för arrayer som endast deklarerar det övre indexet. Om denna sats finns är följande satser identiska, båda deklarerar en array med 100 element:
Dim MyArray (1 till 100) Som heltal
Dim MyArray (100) Som heltal
Flerdimensionella arrayer
De arrayer som skapats i de tidigare exemplen är alla endimensionella arrayer. Tänk på endimensionella arrayer som en enda rad med värden. Matriser du skapar i VBA kan ha så många som 60 dimensioner - även om du sällan behöver mer än två eller tre dimensioner i en matris. Följande exempel deklarerar en 81-heltalsmatris med två dimensioner:
Dim MyArray (1 till 9, 1 till 9) som heltal
Du kan tänka dig att den här arrayen upptar en 9 x 9 matris - perfekt för att lagra alla nummer i ett Sudoku-pussel.
För att referera till ett specifikt element i denna array måste du ange två indexnummer (liknande dess "rad" och dess "kolumn" i matrisen). Följande exempel visar hur du kan tilldela ett värde till ett element i denna array:
MyArray (3, 4)= 125
Denna sats tilldelar ett värde till ett enskilt element i arrayen. Om du tänker på arrayen i termer av en 9 x 9 matris, tilldelar detta 125 till elementet som finns i den tredje raden och fjärde kolumnen i matrisen.
Så här deklarerar du en tredimensionell array med 1 000 element:
Dim My3DArray (1 till 10, 1 till 10, 1 till 10) som heltal
Du kan tänka på en tredimensionell array som en kub. Att visualisera en uppsättning av mer än tre dimensioner är svårare.
Dynamiska arrayer
Du kan också skapa dynamiska arrayer. En dynamisk array har inte ett förinställt antal element. Deklarera en dynamisk array med en tom uppsättning parenteser:
Dim MyArray () Som heltal
Innan du kan använda denna array måste du använda ReDim-satsen för att tala om för VBA hur många element arrayen har. Vanligtvis bestäms antalet element i arrayen medan din kod körs. Du kan använda ReDim-satsen hur många gånger som helst och ändra arrayens storlek så ofta som behövs. Följande exempel visar hur man ändrar antalet element i en dynamisk array. Den förutsätter att variabeln NumElements innehåller ett värde som din kod beräknade.
ReDim MyArray (1 till NumElements)
När du omdimensionerar en array med hjälp av ReDim raderar du alla värden som för närvarande är lagrade i arrayelementen. Du kan undvika att förstöra de gamla värdena genom att använda nyckelordet Bevara. Följande exempel visar hur du kan bevara en arrays värden när du dimensionerar om arrayen:
ReDim Preserve MyArray (1 till NumElements)
Om MyArray för närvarande har tio element, och du kör den föregående satsen med NumElements lika med 12, förblir de första tio elementen intakta, och arrayen har plats för ytterligare två element (upp till antalet som finns i variabeln NumElements). Om NumElements däremot är lika med 7, behålls de första sju elementen men de återstående tre elementen upphör.