VBA vícedimenzionální pole (2D pole)

Tento tutoriál bude diskutovat o 2D a vícerozměrných polích ve VBA.

Vícedimenzionální pole (2D pole)

Vícedimenzionální pole jsou pole, která obsahují více než jednu dimenzi, obvykle dvě nebo tři dimenze, ale pole mohou mít až 32 dimenzí.

Deklarujte 2D pole

Chcete -li vytvořit pole s více než jednou dimenzí, definujte každou samostatnou dimenzi čárkami:

1 Dim intArr (2,3) jako celé číslo

Naplnění 2D pole

Níže uvedený kód naplní 2D pole a poté naplní řádky a sloupce listu hodnotami v poli.

1234567891011121314151617181920212223242526 Sub Populate2D ()'deklarujte 2D poleDim intA (2, 3) jako celé číslo'deklarovat proměnné.'Dim rw As IntegerDim col jako celé číslo'naplnit poleintA (0, 0) = 45intA (0, 1) = 50intA (0, 2) = 55intA (0, 3) = 60intA (1, 0) = 65intA (1, 1) = 70intA (1, 2) = 75intA (1, 3) = 80intA (2, 0) = 85intA (2, 1) = 90intA (2, 2) = 95intA (2, 3) = 100'smyčku v poli a naplňte ExcelPro rw = 0 až 2Pro col = 0 až 3Buňky (rw + 1, col + 1). Hodnota = intA (rw, col)Další plkDalší rwEnd Sub

Tabulku aplikace Excel byste pak měli vyplnit následujícím způsobem.

Naplnění 2D pole z dat aplikace Excel

Níže uvedený kód naplní 2D pole z listu aplikace Excel a poté naplní jiný list daty.

1234567891011121314151617181920212223242526 Sub Populate2D ()"Vyhlašte pracovní listy."Dim ws_Source As WorksheetDim ws_Destinace jako pracovní list"Deklarujte pole."Dim wsData (10, 2) jako varianta"Deklarujte proměnné."Dim rw jako IntegerDim col jako celé číslo“viz zdrojový listNastavit ws_Source = pracovní listy ("List1")'Získejte informace ze zdrojového listu a naplňte polePro rw = LBound (wsData, 1) Do UBound (wsData, 1)Pro col = LBound (wsData, 2) Do UBound (wsData, 2)wsData (rw, col) = ws_Source.Range ("A2"). Offset (rw, col) .HodnotaDalší plkDalší rw“viz cílový listNastavit ws_Destination = Pracovní listy ("List2")'naplňte cílový list z polePro rw = LBound (wsData, 1) Do UBound (wsData, 1)Pro col = LBound (wsData, 2) Do UBound (wsData, 2)ws_Destination.Range ("A1"). Offset (rw, col) .Value = wsData (rw, col)Další plkDalší rwEnd Sub

Změna velikosti pomocí ReDim a Re-Dim Preserve

Velikost pole můžete změnit pomocí ReDim.

1234567891011121314151617 Sub Resize2D ()'deklarujte poleDim varArray () jako Variant'deklarujte velikost pole.'ReDim varArray (1, 2)varArray (0, 0) = "Mel Smith"varArray (0, 1) = "Fred Buckle"varArray (0, 2) = "Jane Eyre"varArray (1, 0) = "účetní"varArray (1, 1) = "tajemník"varArray (1, 2) = "Doktor"'znovu deklarovat velikost pole.'ReDim varArray (0, 1)'znovu zalidnit polevarArray (0, 0) = "Mel Smith"varArray (0, 1) = "Fred Buckle"End Sub

Když pole znovu deklarujete, přijdete o všechna data dříve uložená v poli, pokud nepoužijete Prohlášení o zachování ReDim.

12345678910111213141516 Sub Resize2D ()'deklarujte pole Dim varArray () jako Variant'deklarujte velikost pole.'ReDim varArray (1, 2)varArray (0, 0) = "Mel Smith"varArray (0, 1) = "Fred Buckle"varArray (0, 2) = "Jane Eyre"varArray (1, 0) = "účetní"varArray (1, 1) = "tajemník"varArray (1, 2) = "Doktor"'znovu deklarovat velikost pole.'ReDim Preverve varArray (1, 3)'naplňte pole dalšími hodnotami.'varArray (0, 3) = "Rob Barnes"varArray (1, 3) = "Instalatér"End Sub

Velikost poslední dimenze pole můžete změnit pouze v případě, že chcete zachovat původní data v poli pomocí Re-Dim Zachovat.

Když kliknete na ladění, zvýrazní se chyba, která ukazuje, že první dimenze v poli není stejná jako první dimenze, když byla původně deklarována velikost pole.

wave wave wave wave wave