VBA Dynamic Array (Redim și Redim Preserve)

Acest tutorial va demonstra cum se utilizează matricele dinamice (redim și redim conservare) în VBA.

Matrice dinamică

Matrice dinamice sunt matrici care pot schimba dimensiunile (spre deosebire de matrici statice, care sunt statice).

Pentru a declara o matrice dinamică, declarați matricea, dar omiteți dimensiunea matricei:

1 Dim strNames () Ca șir

Apoi, înainte de a putea atribui valori matricei dvs., trebuie să utilizați Declarația ReDim pentru a seta matricea la dimensiunea dorită:

1 ReDim strNames (1 la 3)

Acum, oricând doriți să modificați dimensiunea matricei, pur și simplu utilizați ReDim (sau ReDim Preserve așa cum vom afla mai jos).

Tablouri de variante dinamice

Notă: matricile de variante sunt puțin diferite. În cazul matricilor de variante, nu este necesar să setați dimensiunea matricei cu ReDim înainte de a atribui valori.

12345678 Sub TestArray ()'declara variabilaDim varNames () Ca variantă'populează matriceavarNames () = Array ("Fred", "Wilma", "Barney", "Betty")'returnează valorileMsgBox Join (varNames, ",")Sfârșitul Sub

Redim vs. Redim Preserve

The ReDim declarația redimensionează o matrice, compensare toate valorile existente.

The ReDim Preserve declarația redimensionează o matrice, păstrarea („Păstrarea”) tuturor valorilor existente.

Folosind ReDim

În practică, redimensionarea unui tablou cu ReDim arată astfel:

123456789101112 Sub TestReDim ()'declarați matricea de șiruriDim strNames () Ca șir'redimensionați matricea de șiruri pentru a putea reține 3 valoriReDim strNames (1 la 3)'populează matricea cu 3 numestrNames (1) = "Mel"strNames (2) = "Steve"strNames (3) = "Bob"'arată rezultatul în fereastra imediatăDebug.Print Join (strNames, vbCrLf)Sfârșitul Sub

Utilizarea ReDim Preserve

În acest exemplu, vom folosi ReDim pentru a seta matricea dinamică inițială și apoi ReDim Preserve pentru a redimensiona matricea, păstrarea valorile originale:

1234567891011121314151617 Sub TestReDim ()'declara matricea de șiruriDim strNames () Ca șir'redimensionați matricea de șiruri pentru a putea reține 3 valoriReDim strNames (1 la 3)'populează matriceastrNames (1) = "Mel"strNames (2) = "Steve"strNames (3) = "Bob"'arată rezultatul în fereastra imediatăDebug.Print Join (strNames, vbCrLf)redim, dar preconizează dateleReDim Preserve strNames (1 la 4)strNames (4) = "Fred"'arată rezultatul în fereastra imediatăDebug.Print Join (strNames, vbCrLf)Sfârșitul Sub

Dacă nu utilizați CONSERVAȚI declarație, ați pierde datele care au fost anterior în matrice.

În fereastra imediată de mai sus, matricea îi populează pe Mel, Steve și Bob. Când a fost declarată din nou, a eliminat acele valori și, în schimb, a returnat 3 valori goale și apoi valoarea „Fred”. Acest lucru se datorează CONSERVAȚI afirmația fiind omisă.

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

wave wave wave wave wave