Tento tutoriál předvede, jak používat dynamická pole (redim a redim zachovat) ve VBA.
Dynamické pole
Dynamická pole jsou pole, která mohou měnit velikosti (na rozdíl od statická pole, které jsou statické).
Chcete -li deklarovat dynamické pole, deklarujete pole, ale vynecháte velikost pole:
1 | Dim strNames () jako řetězec |
Poté, než můžete svému poli přiřadit hodnoty, musíte použít příkaz ReDim k nastavení pole na požadovanou velikost:
1 | ReDim strNames (1 až 3) |
Nyní, kdykoli budete chtít změnit velikost pole, jednoduše použijte ReDim (nebo ReDim Preserve, o čem se dozvíme níže).
Pole dynamických variant
Poznámka: Pole variant se trochu liší. U variantních polí nemusíte před přiřazováním hodnot nastavovat velikost pole pomocí ReDim.
12345678 | Dílčí testovací pole ()'deklarujte proměnnouDim varNames () jako varianta'naplnit polevarNames () = Pole („Fred“, „Wilma“, „Barney“, „Betty“)'vrátit hodnotyPřipojení MsgBox (varNames, ",")End Sub |
Redim vs. Redim Preserve
The ReDim příkaz změní velikost pole, vyklízení všechny existující hodnoty.
The Zachovat ReDim příkaz změní velikost pole, držení („Zachování“) všech stávajících hodnot.
Použití ReDim
V praxi vypadá změna velikosti pole pomocí ReDim takto:
123456789101112 | Dílčí testReDim ()'deklarujte pole řetězců.'Dim strNames () jako řetězec'změňte velikost pole řetězců, aby bylo možné pojmout 3 hodnoty.'ReDim strNames (1 až 3)'naplňte pole 3 názvystrNames (1) = "Mel"strNames (2) = "Steve"strNames (3) = "Bob"'zobrazit výsledek v bezprostředním okněPřipojení Debug.Print (strNames, vbCrLf)End Sub |
Použití ReDim Preserve
V tomto příkladu použijeme ReDim k nastavení počátečního dynamického pole a poté ReDim Preserve pro změnu velikosti pole, držení původní hodnoty:
1234567891011121314151617 | Dílčí testReDim ()'deklarujte pole řetězců.'Dim strNames () jako řetězec'změňte velikost pole řetězců, aby bylo možné pojmout 3 hodnoty.'ReDim strNames (1 až 3)'naplnit polestrNames (1) = "Mel"strNames (2) = "Steve"strNames (3) = "Bob"'zobrazit výsledek v bezprostředním okněPřipojení Debug.Print (strNames, vbCrLf)“redim, ale uchovávejte dataReDim Zachovat strNames (1 až 4)strNames (4) = "Fred"'zobrazit výsledek v bezprostředním okněPřipojení Debug.Print (strNames, vbCrLf)End Sub |
Pokud nepoužíváte ZACHOVAT prohlášení, ztratíte data, která byla v poli dříve.
V bezprostředním okně nahoře pole osídlilo Mel, Steva a Boba. Když byla znovu deklarována, odstraní tyto hodnoty a místo toho vrátí 3 prázdné hodnoty a poté hodnotu „Fred“. To je způsobeno ZACHOVAT prohlášení vynecháno.