La majoria dels llenguatges de programació admeten matrius, inclòs VBA. Una matriu és un grup de variables que comparteixen un nom. Podeu fer referència a una variable específica de la matriu utilitzant el nom de la matriu i un número d'índex entre parèntesis. Per exemple, podeu definir una matriu de 12 variables de cadena per contenir els noms dels mesos de l'any. Si anomeneu la matriu MonthNames , podeu fer referència al primer element de la matriu com a MonthNames (1), el segon element com a MonthNames (2) i així successivament.
Declaració de matrius
Abans de poder utilitzar una matriu, heu de declarar-la. Sense excepcions. A diferència de les variables normals, VBA és molt estricte amb aquesta regla. Declara una matriu amb una instrucció Dim o Public, de la mateixa manera que declares una variable regular. Tanmateix, també heu d'especificar el nombre d'elements de la matriu. Per fer-ho, especifiqueu el primer número d'índex, la paraula clau A i l'últim número d'índex, tot entre parèntesis. L'exemple següent mostra com declarar una matriu de 100 nombres enters:
Dim MyArray (1 a 100) com a nombre enter
Quan declareu una matriu, podeu triar especificar només l'índex superior. Si ometeu l'índex inferior, VBA suposa que és 0. Per tant, les dues declaracions següents declaren la mateixa matriu de 101 elements:
Dim MyArray (0 a 100) com a nombre enter
Dim MyArray (100) com a nombre enter
Si voleu que VBA assumi que 1 (en lloc de 0) és l'índex inferior per a les vostres matrius, incloeu la declaració següent a la secció Declaracions a la part superior del vostre mòdul:
Opció Base 1
Aquesta declaració obliga a VBA a utilitzar 1 com a primer número d'índex per a matrius que declaren només l'índex superior. Si aquesta declaració està present, les declaracions següents són idèntiques, totes dues declaren una matriu de 100 elements:
Dim MyArray (de 1 a 100) com a nombre enter
Dim MyArray (100) com a nombre enter
Matrius multidimensionals
Les matrius creades als exemples anteriors són totes matrius unidimensionals. Penseu en les matrius unidimensionals com una única línia de valors. Les matrius que creeu a VBA poden tenir fins a 60 dimensions, encara que poques vegades necessiteu més de dues o tres dimensions en una matriu. L'exemple següent declara una matriu de 81 nombres enters amb dues dimensions:
Dim MyArray (1 a 9, 1 a 9) com a nombre enter
Podeu pensar que aquesta matriu ocupa una matriu de 9 x 9, perfecta per emmagatzemar tots els números en un trencaclosques de Sudoku.
Per fer referència a un element específic d'aquesta matriu, heu d'especificar dos números d'índex (similars a la seva "fila" i la seva "columna" a la matriu). L'exemple següent mostra com podeu assignar un valor a un element d'aquesta matriu:
MyArray (3, 4)= 125
Aquesta instrucció assigna un valor a un sol element de la matriu. Si esteu pensant en la matriu en termes d'una matriu de 9 x 9, això assigna 125 a l'element situat a la tercera fila i la quarta columna de la matriu.
A continuació s'explica com declarar una matriu tridimensional, amb 1.000 elements:
Dim My3DArray (1 a 10, 1 a 10, 1 a 10) com a nombre enter
Podeu pensar en una matriu tridimensional com un cub. Visualitzar una matriu de més de tres dimensions és més difícil.
Arrays dinàmics
També podeu crear matrius dinàmiques . Una matriu dinàmica no té un nombre predefinit d'elements. Declarar una matriu dinàmica amb un conjunt buit de parèntesis:
Dim MyArray () com a enter
Abans de poder utilitzar aquesta matriu, heu d'utilitzar la instrucció ReDim per indicar a VBA quants elements té la matriu. Normalment, el nombre d'elements de la matriu es determina mentre s'executa el codi. Podeu utilitzar la instrucció ReDim qualsevol nombre de vegades, canviant la mida de la matriu tantes vegades com sigui necessari. L'exemple següent mostra com canviar el nombre d'elements en una matriu dinàmica. Se suposa que la variable NumElements conté un valor, que el vostre codi ha calculat.
ReDim MyArray (1 a NumElements)
Quan redimensioneu una matriu mitjançant ReDim, elimineu tots els valors emmagatzemats actualment als elements de la matriu. Podeu evitar destruir els valors antics utilitzant la paraula clau Preserva. L'exemple següent mostra com podeu conservar els valors d'una matriu quan redimensioneu la matriu:
ReDim Preserve MyArray (1 a NumElements)
Si MyArray actualment té deu elements i executeu la instrucció anterior amb NumElements igual a 12, els deu primers elements romandran intactes i la matriu té espai per a dos elements addicionals (fins al nombre que conté la variable NumElements). Tanmateix, si NumElements és igual a 7, es conserven els set primers elements, però els tres elements restants s'acaben.