Ce este o matrice (Array)?

O matrice (array) este o variabilă care poate conține mai multe valori (dar care sunt de același tip).

Matricea poate fi accesată ca un tot unitar pentru a lucra eficient cu toate valorile pe care le conține. Sau poate fi accesată orice valoare individuală stocată în matrice, specificând numărul său de index, care indică poziția sa în matrice.

Matricea poate fi comparată cu o listă numerotată, similară cu o enumerare (așa cum este descris pe pagina Lucrul cu enumerări).

Fiecare element din listă este localizat pe un rând și este identificat printr-un număr de index, astfel încât să permit accesarea valorii elementului prin specificarea numărului său index.

La fel ca și casele de pe o stradă: toate au același nume, cum ar fi Strada Principala, dar fiecare are un număr distinctiv propriu.

Descrierea anterioară este pentru o matrice simplă - o listă numerotată ca un rând de case pe o stradă. Se spune că o astfel de matrice are o singură dimensiune. Cu toate acestea, se pot construi mai multe artere complexe, numite multidimensionale. Ele sunt mai mult ca un puzzle încrucișat cu rânduri și coloane.

Pentru moment vom observa calitățile celei mai comune și mai ușor de vizualizat a matricei de structuri, a matricei unidimensionale.

Matricile Variant pot stoca valori pentru diferite tipuri de date

O matrice de tip Variant poate stoca mai multe subtipuri de date. Acest lucru este posibil pentru că tipul Variant permite orice tip de date: String, Integer și altele. De reținut că tipul Variant poate conține date de toate tipurile.

Scenariu din lumea reală

Folosirea declarației Option Base 1 pentru a simplifica indecșii

Chiar dacă codul va fi mai puțin portabil - și alți programatori care folosesc alte limbaje de programare ar putea obiecta – la scrierea de macrouri pentru uz personal, se poate utiliza declarația controversată Option Base 1.

O matrice este delimitată (sau limitată) de o limită inferioară și de o limită superioară. Cu alte cuvinte, numerele indexului matricei încep cu 1 (limita inferioară) și se termină numărul de elemente care sunt în matrice (limita superioară). O matrice care reprezintă ouăle într-o cutie cu 12 ouă ar avea o limită inferioară de 1 și o limită superioară de 12. Aceasta este modalitatea simplă de a construi și vizualiza o matrice, dar mai e ceva: multe din limbajele de programare, inclusiv VBA, utilizează implicit ca limită inferioară zero, în loc de unu.

Aceasta înseamnă că primul element dintr-o matrice este indexat ca zero - este elementul zero. Acest lucru poate fi în mod evident confuz, deoarece înseamnă că întotdeauna lucrați cu un număr de index care este mai mic decât poziția actuală a elementului în matrice.

Într-o astfel de matrice, ianuarie va fi luna zero; Februarie va fi prima lună, cu indexul de matrice numărul 1; Martie va avea indexul 2; și așa mai departe.

Este ca și cum lista dvs. de cumpărături arăta astfel:

0. Perii

1. Vopsea

2. Bandă de mascat

3. Cârpe

Nimeni nu scrie liste cu un element zero, dar acesta este doar una din problemele de programare pe calculator cauzate de neglijență atunci când limbajele de programare au fost construite pentru prima dată.

http://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD831.html

Cu toate acestea, spre deosebire de majoritatea celorlalte limbaje de programare, VBA permite normalizarea modului în care funcționează indecșii matricii: începând cu indexul 1, modul în care oamenii numără elementele în seturi sau liste.

VBA permite ca 1 să fie numărul indexului implicit al primului element într-o matrice introducând instrucțiunea Option Base 1 la începutul unui modul. Introduceți această opțiune în secțiunea Declarații generale din fereastra Cod și numărul de index pentru fiecare element din matrice va fi același cu poziția elementului din matrice, astfel încât matricea este mai ușor de utilizat și mai ușor de vizualizat.

De ce primul element dintr-un array implicit este zero? Acum patruzeci de ani, cei care au scris limbajele de programare au decis să facă acest lucru. Excepția majoră a fost limbajul BASIC, strămoșul VBA. Acesta a ales numărul 1 drept limita inferioară a oricărei matrice. Începând cu versiunea 6 a Visual Basic, BASIC a fost modificat pentru a-l face să fie conform cu celelalte limbaje, iar cei responsabili au schimbat limita inferioară a VBA la zero. Cu toate acestea, BASIC a păstrat opțiunea programatorului de a specifica limita inferioară ca fiind 1, folosind instrucțiunea Option Base.

Matricile (Array) sunt liste, iar oamenii nu încep listele cu zero. O echipă câștigătoare este pe primul loc, nu pe locul zero. În VBA există opțiunea de a evita această problemă. Însă dacă vor fi utilizate și alte limbaje de programare sau programe profesionale, pot apare mesaje de eroare generate de acest indice zero. Problemele de indexare se rezolvă scăzând 1 din numărul de index.