Enamik programmeerimiskeeli toetab massiive, sealhulgas VBA-d. Massiivi on rühm muutujad, mis jagavad nimi. Massiivi konkreetsele muutujale viitate kasutades massiivi nime ja indeksi numbrit sulgudes. Näiteks saate aasta kuude nimede hoidmiseks määratleda 12 stringimuutuja massiivi. Kui annate massiivile nimeks Kuunimed , saate massiivi esimesele elemendile viidata kui Kuunimed (1), teisele elemendile Kuunimed (2) ja nii edasi.
Massiivide deklareerimine
Enne massiivi kasutamist peate selle deklareerima. Eranditeta. Erinevalt tavalistest muutujatest on VBA selle reegli suhtes väga range. Massiivi deklareerite Dim või Public avaldusega, nagu deklareerite tavalise muutuja. Siiski peate määrama ka massiivi elementide arvu. Selleks määrate esimese indeksinumbri, märksõna To ja viimase indeksinumbri – kõik sulgudes. Järgmine näide näitab, kuidas deklareerida 100 täisarvust koosnev massiiv:
Dim MyArray (1 kuni 100) täisarvuna
Massiivi deklareerimisel saate määrata ainult ülemise indeksi. Kui jätate madalama indeksi välja, eeldab VBA, et see on 0. Seetõttu deklareerivad mõlemad järgmised avaldused sama 101-elemendilise massiivi:
Dim MyArray (0 kuni 100) täisarvuna
Dim MyArray (100) täisarvuna
Kui soovite, et VBA eeldaks, et 1 (mitte 0) on teie massiivide madalam indeks, lisage mooduli ülaosas olevasse jaotisesse Deklaratsioonid järgmine väide:
Võimaluse alus 1
See väide sunnib VBA-d kasutama 1 esimese indeksinumbrina massiivide jaoks, mis deklareerivad ainult ülemist indeksit. Kui see väide on olemas, on järgmised avaldused identsed, mõlemad deklareerivad 100-elemendilist massiivi:
Dim MyArray (1 kuni 100) täisarvuna
Dim MyArray (100) täisarvuna
Mitmemõõtmelised massiivid
Eelmistes näidetes loodud massiivid on kõik ühemõõtmelised massiivid. Mõelge ühemõõtmelistele massiividele kui ühele väärtuste reale. VBA-s loodud massiividel võib olla kuni 60 dimensiooni – kuigi harva vajate massiivi rohkem kui kahte või kolme mõõdet. Järgmine näide deklareerib kahemõõtmelise 81-täisarvulise massiivi:
Dim MyArray (1 kuni 9, 1 kuni 9) täisarvuna
Võite arvata, et see massiiv hõlmab 9 x 9 maatriksit – see sobib suurepäraselt kõigi numbrite salvestamiseks Sudoku puslesse.
Selle massiivi konkreetsele elemendile viitamiseks peate määrama kaks indeksi numbrit (sarnaselt maatriksi "real" ja "veeruga"). Järgmine näide näitab, kuidas saate selle massiivi elemendile väärtuse määrata:
MyArray (3, 4) = 125
See väide määrab massiivi ühele elemendile väärtuse. Kui mõtlete massiivile maatriksina 9 x 9, määrab see maatriksi kolmandas reas ja neljandas veerus asuvale elemendile 125.
1000 elemendiga kolmemõõtmelise massiivi deklareerimiseks tehke järgmist.
Dim My3DArray (1 kuni 10, 1 kuni 10, 1 kuni 10) täisarvuna
Kolmemõõtmelist massiivi võite pidada kuubiks. Rohkem kui kolmemõõtmelise massiivi visualiseerimine on keerulisem.
Dünaamilised massiivid
Samuti saate luua dünaamilisi massiive. Dünaamilisel massiivil ei ole eelseadistatud arvu elemente. Dünaamilise massiivi deklareerimine tühjade sulgudega:
Dim MyArray () Täisarvuna
Enne selle massiivi kasutamist peate kasutama ReDim-lauset, et öelda VBA-le, kui palju elemente massiiv sisaldab. Tavaliselt määratakse massiivi elementide arv koodi töötamise ajal. ReDimi lauset saate kasutada suvalise arvu kordi, muutes massiivi suurust nii sageli kui vaja. Järgmine näide näitab, kuidas muuta dünaamilise massiivi elementide arvu. See eeldab, et muutuja NumElements sisaldab väärtust, mille teie kood arvutas.
ReDim MyArray (1 kuni NumElements)
Massiivi ümbermõõtmisel ReDimi abil kustutate kõik praegu massiivi elementidesse salvestatud väärtused. Vanade väärtuste hävitamist saab vältida kasutades märksõna Säilita. Järgmine näide näitab, kuidas saate massiivi väärtusi massiivi ümbermõõtmisel säilitada.
ReDim Preserve MyArray (1 kuni NumElements)
Kui MyArray-l on praegu kümme elementi ja te täidate eelmise lause NumElements võrdub 12-ga, jäävad esimesed kümme elementi puutumatuks ja massiivis on ruumi kahele lisaelemendile (kuni muutujas NumElements sisalduva arvuni). Kui NumElements võrdub 7-ga, jäävad esimesed seitse elementi alles, kuid ülejäänud kolm elementi kaovad.