Dynamické pole VBA (Redim & Redim Preserve)

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.

wave wave wave wave wave