Declararea unei matrici (Array)

O matrice este un fel de variabilă, deci matricea se declară utilizând cuvinte cheie cunoscute: Dim, Private, Public și Static. Cu toate acestea, pentru a indica faptul că este o matrice și nu o variabilă normală, se adaugă o pereche de paranteze după numele matricei. De exemplu, următoarea declarație declară un matrice numit curMonthProfit:

  Dim varProfitLunar()

Fără paranteze, este creată o variabilă care poate stoca o singură valoare:

  Dim varProfitLunar

Deoarece nu a fost specificat niciun tip de date în declarația (Dim) a exemplului matricei precedente, acest exemplu creează o matrice Variant. VBA atribuie apoi tipurile de date corespunzătoare (String, Integer și așa mai departe) atunci când sunt stocate date în matrice.

Cu toate acestea, tipul de date al unei matrice poate fi specificat, ca și pentru o variabilă obișnuită. De exemplu, următoarea declarație declară matricea numită curMonthProfit și o face ca tip de date valutar:

  Dim curProfitLunar() As Currency

Se poate specifica și numărul de elemente din matrice folosind array subscript. De exemplu, în declarația următoare matricea numită curMonthProfit, are tipul de date Currency și poate conține 12 elemente:

  Dim curProfitLunar(11) As Currency

Aici se poate vedea problema elementului zero. Matricea conține 12 elemente, dar în declarație sunt specificate doar 11! Subscriptul matricii din declarația

Dim curProfitLunar(11) As Currency 

este 11 în loc de 12 pentru că indexul matricii începe cu 0 în loc de 1.

Indexul 0 dă listei un extra element.

Primul element este curProfitLunar(0), al doilea este curProfitLunar(1), iar al 12-lea este curProfitLunar(11). (Se poate evita numărarea intuitivă folosind declarația Option Base 1.)

Mai jos se poate vedea reprezentarea simplă a unei matrici unidimensionale create de declarația

Dim curProfitLunar(11) As Currency

Pentru a începe numerotarea cu 1, se adaugă declarația Option Base 1 în zona declarațiilor de la începutul modulului care declară matricea. Iată un exemplu:

Option Base 1 'la inceputul codului 
Dim curMonthProfit(12) As Currency

Tipul Variants poate să nu fie eficient în anumite Circumstanțe

De reținut că atunci când se declară o matrice cu omiterea tipului de date (VBA va folosi automat tipul de date Variant) determină o utilizare a memoriei ușor mai mare, care ar putea (în condiții extreme) să încetinească performanța computerului. Deoarece un array necesită stocare pentru fiecare element pe care îl conține, o matrice foarte mare poate consuma o cantitate semnificativă de memorie. Acest lucru este valabil în mod special în cazul câmpurilor multidimensionale.

De asemenea, se pot specifica în mod explicit limitele inferioare și superioare ale unei matrici. Acest cod exemplu arată că limita inferioară trebuie să fie 1 și limita superioară este 12:

Option Base 1 'la inceputul codului
Dim curMonthProfit(1 To 12) As Currency