Arbeide med Arrays for VBA programmering i Excel 2016

De fleste programmeringsspråk støtte arrays, inkludert VBA. En matrise
er en gruppe variabler som deler et navn. Man henvise til en bestemt variabel i matrisen ved hjelp av matrisen navn og et indekstall i parentes. For eksempel kan du definere en rekke 12 strengvariabler for å holde navnene på månedene av året. Hvis du kaller matrisen MonthNames
, kan du referere til det første elementet i matrisen som MonthNames (1), det andre elementet som MonthNames (2), og så videre.

erklære arrays

Før du kan bruke en matrise, du
erklære det. Ingen unntak. I motsetning til med vanlige variabler, er VBA svært strenge på denne regelen. Du erklærer en matrise med en Dim eller offentlig uttalelse, akkurat som du erklære en vanlig variabel. Men må du også angi antall elementer i tabellen. Du gjør dette ved å angi indekstallet, nøkkelordet du vil, og det siste indeksnummeret - alt inni parentes. Følgende eksempel viser hvordan å erklære en rekke 100 heltall:
Dim myArray (1 til 100) As Integer

Når du deklarerer en matrise, kan du velge å spesifisere bare den øvre indeks. Hvis du utelater lavere indeks, VBA forutsetter at det er 0. Derfor begge av følgende utsagn erklære den samme 101-element matrise:
Dim myArray (0 til 100) Som IntegerDim myArray (100) Som IntegerIf du vil VBA til anta at en (snarere enn 0) er den nedre indeks for dine arrays, inkluderer følgende uttalelse i deklarasjonsdelen på toppen av modulen:
Option Base 1

Denne uttalelsen krefter VBA å bruke en som den første indeksnummeret for arrays som erklærer bare den øvre indeks. Hvis dette utsagnet er til stede, følgende utsagn er identiske, både erklære en 100-element matrise:
Dim myArray (1 til 100) Som IntegerDim myArray (100) som heltall
flerdimensjonale arrays

arrays opprettet i de foregående eksemplene er alle en-dimensjonale arrays. Tenk på en-dimensjonale arrays som en eneste linje med verdier. Arrays du oppretter i VBA kan ha så mange som 60 dimensjoner - selv om du sjelden trenger mer enn to eller tre dimensjoner i en matrise. Følgende eksempel erklærer en 81-heltall array med to dimensjoner:
Dim myArray (1 til 9, 1 til 9) As Integer

Du kan tenke på denne matrisen som opptar en 9 x 9 matrise - perfekt for lagring av alle tallene i en Sudoku puslespill.

for å referere til et bestemt element i denne tabellen, må du spesifisere to indeksnumrene (ligner på sin "rad" og dens "kolonnen" i matrisen). Følgende eksempel viser hvordan du kan tilordne en verdi til et element i denne matrisen:
myArray (3, 4) = 125

Denne uttalelsen tildeler en verdi til et enkelt element i matrisen. Hvis du tenker på matrisen i form av en 9 x 9 matrise, gir dette 125 til elementet som ligger i tredje rad og fjerde kolonne i matrisen.

Her er hvordan å erklære en tre-dimensjonal array , med 1000 elementer:
Dim My3DArray (1 til 10, 1 til 10, 1 til 10) As Integer

Du kan tenke på en tre-dimensjonal array som en kube. Visualisere en rekke mer enn tre dimensjoner er vanskeligere.

Dynamiske arrays

Du kan også opprette dynamiske
arrays. En dynamisk matrise ikke har en forhåndsinnstilt antall elementer. Erklære en dynamisk array med et tomt sett med parenteser:
Dim myArray () As Integer

Før du kan bruke denne tabellen, må du bruke ReDim uttalelse å fortelle VBA hvor mange elementer i matrisen har. Vanligvis er antall elementer i tabellen bestemmes mens koden din kjører. Du kan bruke ReDim uttalelse ubegrenset antall ganger, endre tabellens størrelse så ofte som nødvendig. Følgende eksempel viser hvordan du endrer antall elementer i en dynamisk array. Det forutsetter at numElementer variabelen inneholder en verdi, som koden beregnes.
ReDim myArray (1 Til numElementer) Når du redimensjonere en matrise ved hjelp ReDim, tørk deg ut noen verdier som er lagret i oppstillingselementene. Du kan unngå å ødelegge de gamle verdiene ved å bruke Bevar søkeord. Følgende eksempel viser hvordan du kan bevare en tabellens verdier når du redimensjonere matrisen:
ReDim Bevar myArray (1 Til numElementer)

Hvis myArray har i dag ti elementer, og du utfører den foregående setningen med numElementer lik 12, er første ti elementer forblir intakt, og rekken har plass til to ekstra elementer (opp til antallet som finnes i de variable numElementer). Hvis numElementer tilsvarer 7 derimot, er de første syv elementene beholdt, men de resterende tre elementene møte sin død.