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.