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.