Večina programskih jezikov podpira matrike, vključno z VBA. Polje je skupina spremenljivk, ki imajo ime. Na določeno spremenljivko v matriki se sklicujete z uporabo imena matrike in indeksne številke v oklepajih. Na primer, definirate lahko niz 12 nizovnih spremenljivk, ki vsebujejo imena mesecev v letu. Če matriki poimenujete MonthNames , se lahko sklicujete na prvi element matrike kot MonthNames (1), drugi element kot MonthNames (2) itd.
Deklaracija nizov
Preden lahko uporabite matriko, jo morate deklarirati. Brez izjem. Za razliko od običajnih spremenljivk je VBA zelo strog glede tega pravila. Matriko deklarirate s stavkom Dim ali Public, tako kot deklarirate običajno spremenljivko. Vendar pa morate določiti tudi število elementov v matriki. To naredite tako, da navedete prvo številko indeksa, ključno besedo Za in zadnjo številko indeksa – vse v oklepajih. Naslednji primer prikazuje, kako razglasiti matriko 100 celih števil:
Dim MyArray(1 do 100) kot celo število
Ko razglasite matriko, lahko izberete, da podate samo zgornji indeks. Če izpustite spodnji indeks, VBA predpostavlja, da je 0. Zato oba naslednja stavka razglašata isto matriko 101 elementov:
Dim MyArray (0 do 100) kot celo število
Dim MyArray (100) kot celo število
Če želite, da VBA domneva, da je 1 (namesto 0) spodnji indeks za vaše matrike, v razdelek Deklaracije na vrhu modula vključite naslednji stavek:
Osnova možnosti 1
Ta stavek prisili VBA, da uporabi 1 kot prvo številko indeksa za nize, ki deklarirajo samo zgornji indeks. Če je ta stavek prisoten, so naslednji stavki identični, oba razglašata matriko 100 elementov:
Dim MyArray (1 do 100) kot celo število
Dim MyArray (100) kot celo število
Večdimenzionalni nizi
Nizi, ustvarjeni v prejšnjih primerih, so vsi enodimenzionalni nizi. Pomislite na enodimenzionalne nize kot na eno vrstico vrednosti. Nizi, ki jih ustvarite v VBA, imajo lahko kar 60 dimenzij – čeprav le redko potrebujete več kot dve ali tri dimenzije v polju. Naslednji primer razglasi 81-celoštevilno matriko z dvema dimenzijama:
Dim MyArray (1 do 9, 1 do 9) kot celo število
O tem nizu si lahko predstavljate, da zaseda matriko 9 x 9 – kot nalašč za shranjevanje vseh številk v uganki Sudoku.
Če se želite sklicevati na določen element v tem nizu, morate podati dve indeksni številki (podobno kot njegova »vrstica« in njegov »stolpec« v matriki). Naslednji primer prikazuje, kako lahko elementu v tem nizu dodelite vrednost:
MyArray (3, 4) = 125
Ta stavek dodeli vrednost posameznemu elementu v matriki. Če razmišljate o matriki v smislu matrike 9 x 9, to dodeli 125 elementu, ki se nahaja v tretji vrstici in četrtem stolpcu matrike.
Evo, kako razglasiti tridimenzionalno matriko s 1000 elementi:
Dim My3DArray (1 do 10, 1 do 10, 1 do 10) kot celo število
Tridimenzionalni niz si lahko predstavljate kot kocko. Vizualizacija niza več kot treh dimenzij je težja.
Dinamični nizi
Ustvarite lahko tudi dinamične nize. Dinamična matrika nima prednastavljenega števila elementov. Razglasite dinamično matriko s praznim nizom oklepajev:
Dim MyArray () kot celo število
Preden lahko uporabite to matriko, morate uporabiti stavek ReDim, da poveste VBA, koliko elementov ima matrika. Običajno se število elementov v matriki določi med izvajanjem vaše kode. Stavek ReDim lahko uporabite poljubno število krat, pri čemer spreminjate velikost matrike tako pogosto, kot je potrebno. Naslednji primer prikazuje, kako spremeniti število elementov v dinamičnem nizu. Predpostavlja, da spremenljivka NumElements vsebuje vrednost, ki jo je izračunala vaša koda.
ReDim MyArray (1 do NumElements)
Ko ponovno dimenzionirate matriko z uporabo ReDim, izbrišete vse vrednosti, ki so trenutno shranjene v elementih matrike. Z uporabo ključne besede Preserve se lahko izognete uničenju starih vrednosti. Naslednji primer prikazuje, kako lahko ohranite vrednosti matrike, ko matriko spremenite:
ReDim Preserve MyArray (1 do NumElements)
Če ima MyArray trenutno deset elementov in izvedete prejšnji stavek z vrednostjo NumElements, ki je enaka 12, prvih deset elementov ostane nedotaknjenih in ima matrika prostor za dva dodatna elementa (do števila, ki ga vsebuje spremenljivka NumElements). Če pa je NumElements enako 7, se prvih sedem elementov ohrani, preostali trije elementi pa prenehajo.