Matrice multi-dimensionale VBA (matrice 2D)

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ă.

Vei ajuta la dezvoltarea site-ului, partajarea pagina cu prietenii

wave wave wave wave wave