Tento tutoriál bude diskutovať o 2-d a viacrozmerných poliach vo VBA.
Viacrozmerné pole (2D polia)
Viacrozmerné polia sú polia, ktoré obsahujú viac ako jednu dimenziu, zvyčajne dve alebo tri dimenzie, ale polia môžu mať až 32 dimenzií.
Deklarujte 2D pole
Ak chcete vytvoriť pole s viac ako jednou dimenziou, definujte každú samostatnú dimenziu čiarkami:
1 | Dim intArr (2,3) ako celé číslo |
Osadzovanie 2D poľa
Nasledujúci kód naplní 2D pole a potom vyplní riadky a stĺpce pracovného hárka hodnotami v poli.
1234567891011121314151617181920212223242526 | Sub Populate2D ()'deklarujte 2D poleDim intA (2, 3) ako celé číslo'deklarovať premennéDim rw As IntegerDim col ako celé číslo“naplňte 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'prechádzajte poľom a naplňte program ExcelPre rw = 0 až 2Pre col = 0 až 3Bunky (rw + 1, col + 1). Hodnota = intA (rw, col)Ďalej plkDalsia rwKoniec pod |
Vaša tabuľka programu Excel by sa mala potom vyplniť nasledovne.
Vyplnenie 2D poľa z údajov programu Excel
Nasledujúci kód naplní 2D pole z pracovného hárka programu Excel a potom vyplní iný hárok údajmi.
1234567891011121314151617181920212223242526 | Sub Populate2D ()„Vyhláste pracovné listyDim ws_Source As worksheetDim ws_Cieľ ako pracovný list„Vyhláste poleDim wsData (10, 2) ako variant„Vyhláste premennéDim rw ako IntegerDim col ako celé číslo“Pozrite si zdrojový listNastaviť ws_Source = pracovné listy („list1“)'Získajte informácie zo zdrojového listu a naplňte polePre rw = LBound (wsData, 1) Do UBound (wsData, 1)Pre col = LBound (wsData, 2) Do UBound (wsData, 2)wsData (rw, col) = ws_Source.Range ("A2"). Offset (rw, col) .HodnotaĎalej plkDalsia rw“pozri list určeniaNastaviť ws_Destination = pracovné listy („list2“)'vyplňte cieľový hárok z poľaPre rw = LBound (wsData, 1) Do UBound (wsData, 1)Pre col = LBound (wsData, 2) Do UBound (wsData, 2)ws_Destination.Range ("A1"). Ofset (rw, col) .Value = wsData (rw, col)Ďalej plkDalsia rwKoniec pod |
Zmena veľkosti pomocou ReDim a Re-Dim Preserve
Veľkosť poľa môžete zmeniť pomocou ReDim.
1234567891011121314151617 | Podrozmer2D ()'deklarujte poleDim varArray () ako variant'deklarujte veľkosť poľaReDim varArray (1, 2)varArray (0, 0) = "Mel Smith"varArray (0, 1) = "Fred Buckle"varArray (0, 2) = "Jane Eyre"varArray (1, 0) = "Účtovník"varArray (1, 1) = "tajomník"varArray (1, 2) = "Doktor"'znova deklarovať veľkosť poľaReDim varArray (0, 1)'repopulate the arrayvarArray (0, 0) = "Mel Smith"varArray (0, 1) = "Fred Buckle"Koniec pod |
Keď znova deklarujete pole, prídete o všetky údaje, ktoré v ňom boli predtým uložené, pokiaľ nepoužijete príponu Vyhlásenie o zachovaní spoločnosti ReDim.
12345678910111213141516 | Podrozmer2D ()'deklarujte pole Dim varArray () ako variant'deklarujte veľkosť poľaReDim varArray (1, 2)varArray (0, 0) = "Mel Smith"varArray (0, 1) = "Fred Buckle"varArray (0, 2) = "Jane Eyre"varArray (1, 0) = "Účtovník"varArray (1, 1) = "tajomník"varArray (1, 2) = "Doktor"'znova deklarovať veľkosť poľaReDim Preverve varArray (1, 3)'naplňte pole ďalšími hodnotamivarArray (0, 3) = "Rob Barnes"varArray (1, 3) = "Inštalatér"Koniec pod |
Veľkosť posledného rozmeru poľa môžete zmeniť iba vtedy, ak v ňom chcete zachovať pôvodné údaje Re-Dim Preserve.
Keď kliknete na ladenie, zvýrazní sa chyba, ktorá ukazuje, že prvá dimenzia v poli nie je rovnaká ako prvá dimenzia, keď bola pôvodne deklarovaná veľkosť poľa.