Acest tutorial va discuta matricele 2-d și multi-dimensionale în VBA.
Matrice multi-dimensionale (matrice 2D)
Tablourile multidimensionale sunt tablouri care conțin mai multe dimensiuni, de obicei două sau trei dimensiuni, dar tablourile pot avea până la 32 de dimensiuni.
Declarați o matrice 2D
Pentru a crea o matrice cu mai multe dimensiuni, utilizați virgule pentru a defini fiecare dimensiune separată:
1 | Dim intArr (2,3) ca întreg |
Popularea unei matrice 2D
Codul de mai jos va completa o matrice 2D, apoi va popula rândurile și coloanele unei foi de lucru cu valorile din matrice.
1234567891011121314151617181920212223242526 | Sub Populate2D ()'declara matricea 2DDim intA (2, 3) Ca întreg'declara variabileDim rw Ca întregDim col As Integer'populează matriceaintA (0, 0) = 45intA (0, 1) = 50intA (0, 2) = 55intA (0, 3) = 60intA (1, 0) = 65intA (1, 1) = 70intA (1, 2) = 75intA (1, 3) = 80intA (2, 0) = 85intA (2, 1) = 90intA (2, 2) = 95intA (2, 3) = 100parcurgeți matricea și completați ExcelPentru rw = 0 până la 2Pentru col = 0 la 3Celule (rw + 1, col + 1). Valoare = intA (rw, col)Următoarea colUrmătorul rwSfârșitul Sub |
Foaia dvs. de calcul Excel ar trebui apoi să fie completată după cum urmează.
Popularea unui tablou 2D din date Excel
Codul de mai jos va completa o matrice 2D dintr-o foaie de lucru Excel și apoi va completa o altă foaie cu datele.
1234567891011121314151617181920212223242526 | Sub Populate2D ()„Declarați foile de lucruDim ws_Source As Sheet de lucruDim ws_Destination Ca foaie de lucru'Declarați matriceaDim wsData (10, 2) Ca variantă„Declarați variabileleDim rw ca IntegerDim col As Integer'consultați foaia sursăSet ws_Source = Foi de lucru („Sheet1”)'obțineți informațiile din foaia sursă și completați matriceaPentru rw = LBound (wsData, 1) To UBound (wsData, 1)Pentru col = LBound (wsData, 2) To UBound (wsData, 2)wsData (rw, col) = ws_Source.Range ("A2"). Offset (rw, col) .ValueUrmătoarea colUrmătorul rw'consultați fișa de destinațieSet ws_Destination = Foi de lucru („Sheet2”)'populează foaia de destinație din matricePentru rw = LBound (wsData, 1) To UBound (wsData, 1)Pentru col = LBound (wsData, 2) To UBound (wsData, 2)ws_Destination.Range ("A1"). Offset (rw, col) .Value = wsData (rw, col)Următoarea colUrmătorul rwSfârșitul Sub |
Redimensionarea utilizând ReDim și Re-Dim Preserve
Puteți redimensiona o matrice folosind ReDim.
1234567891011121314151617 | Sub Redimensionare2D ()'declara matriceaDim varArray () ca variantă'declarați dimensiunea matriceiReDim varArray (1, 2)varArray (0, 0) = "Mel Smith"varArray (0, 1) = "Fred Buckle"varArray (0, 2) = "Jane Eyre"varArray (1, 0) = "Contabil"varArray (1, 1) = "Secretar"varArray (1, 2) = "Doctor"'redeclară dimensiunea matriceiReDim varArray (0, 1)'repopulați matriceavarArray (0, 0) = "Mel Smith"varArray (0, 1) = "Fred Buckle"Sfârșitul Sub |
Când redeclarați matricea, veți pierde orice date păstrate anterior în matrice, cu excepția cazului în care utilizați fișierul Declarație ReDim Preserve.
12345678910111213141516 | Sub Redimensionare2D ()'declarați tabloul Dim varArray () ca Variant'declarați dimensiunea matriceiReDim varArray (1, 2)varArray (0, 0) = "Mel Smith"varArray (0, 1) = "Fred Buckle"varArray (0, 2) = "Jane Eyre"varArray (1, 0) = "Contabil"varArray (1, 1) = "Secretar"varArray (1, 2) = "Doctor"'redeclară dimensiunea matriceiReDim Preverve varArray (1, 3)'populează matricea cu valori suplimentarevarArray (0, 3) = "Rob Barnes"varArray (1, 3) = "Instalator"Sfârșitul Sub |
Puteți redimensiona ultima dimensiune a unui Array numai dacă doriți să păstrați datele originale în Array cu Redimensionează conservarea.
Când faceți clic pe depanare, eroarea va fi evidențiată arătând că prima dimensiune din matrice nu este aceeași cu prima dimensiune atunci când dimensiunea matricei a fost inițial declarată.