Dynamické pole VBA (Redim & Redim Preserve)

Tento tutoriál ukáže, ako používať dynamické polia (redim a redim zachovať) vo VBA.

Dynamické pole

Dynamické polia sú polia, ktoré môžu meniť veľkosti (na rozdiel od statické polia, ktoré sú statické).

Ak chcete deklarovať dynamické pole, deklarujete pole, ale vynecháte veľkosť poľa:

1 Dim strNames () ako reťazec

Potom, než budete môcť svojmu poli priradiť hodnoty, musíte použiť príkaz ReDim na nastavenie poľa na požadovanú veľkosť:

1 ReDim strNames (1 až 3)

Teraz, kedykoľvek budete chcieť zmeniť veľkosť poľa, jednoducho použite ReDim (alebo ReDim Preserve, o čom sa dozvieme nižšie).

Polia dynamických variantov

Poznámka: Variantné polia sú trochu odlišné. Pri variantných poliach nemusíte pred priradením hodnôt nastavovať veľkosť poľa pomocou ReDim.

12345678 Dielčí testovací pole ()“deklarujte premennúDim varNames () ako variant“naplňte polevarNames () = Pole („Fred“, „Wilma“, „Barney“, „Betty“)'vrátiť hodnotyPripojenie MsgBox (varNames, ",")Koniec pod

Redim vs. Redim Preserve

The ReDim príkaz zmení veľkosť poľa, zúčtovanie všetky existujúce hodnoty.

The Zachovať ReDim príkaz zmení veľkosť poľa, držanie („Zachovanie“) všetkých existujúcich hodnôt.

Použitie ReDim

V praxi vyzerá zmena veľkosti poľa pomocou ReDim takto:

123456789101112 Sub TestReDim ()'deklarujte pole reťazcovDim strNames () ako reťazec'Zmeňte veľkosť poľa reťazcov, aby bolo možné držať 3 hodnotyReDim strNames (1 až 3)'naplňte pole 3 menamistrNames (1) = "Mel"strNames (2) = "Steve"strNames (3) = "Bob"'ukážte výsledok v bezprostrednom okneDebug.Print Pripojenie (strNames, vbCrLf)Koniec pod

Použitie ReDim Preserve

V tomto prípade použijeme ReDim na nastavenie počiatočného dynamického poľa a potom ReDim Preserve na zmenu veľkosti poľa, držanie pôvodné hodnoty:

1234567891011121314151617 Sub TestReDim ()'deklarujte pole reťazcovDim strNames () ako reťazec'Zmeňte veľkosť poľa reťazcov, aby bolo možné držať 3 hodnotyReDim strNames (1 až 3)“naplňte polestrNames (1) = "Mel"strNames (2) = "Steve"strNames (3) = "Bob"'ukážte výsledok v bezprostrednom okneDebug.Print Pripojenie (strNames, vbCrLf)„redim, ale uchovávajte údajeReDim Zachovať strNames (1 až 4)strNames (4) = "Fred"'ukážte výsledok v bezprostrednom okneDebug.Print Pripojenie (strNames, vbCrLf)Koniec pod

Ak nepoužívate ZACHOVAŤ príkaz, stratíte údaje, ktoré boli v poli predtým.

V bezprostrednom okne vyššie pole obsadilo Mela, Steva a Boba. Keď bol znova deklarovaný, odstráni tieto hodnoty a namiesto toho vráti 3 prázdne hodnoty a potom hodnotu „Fred“. Je to kvôli ZACHOVAŤ vyhlásenie sa vynecháva.

Vám pomôže rozvoju miesta, zdieľať stránku s priateľmi

wave wave wave wave wave