Ez az oktatóanyag a 2-d és többdimenziós tömböket tárgyalja a VBA-ban.
Többdimenziós tömb (2D tömbök)
A többdimenziós tömbök olyan tömbök, amelyek egynél több dimenziót tartalmaznak, általában két vagy három dimenziót, de a tömbök akár 32 dimenziót is tartalmazhatnak.
2D tömb deklarálása
Egynél több dimenzióval rendelkező tömb létrehozásához vesszővel határozza meg az egyes dimenziókat:
1 | Dim intArr (2,3) egész számként |
2D tömb feltöltése
Az alábbi kód kitölti a 2D tömböt, majd feltölti a munkalap sorait és oszlopait a tömb értékeivel.
1234567891011121314151617181920212223242526 | Részpopuláció2D ()'deklarálja a 2D tömbötDim intA (2, 3) Egész számként'deklarálja a változókatDim rw Mint egészDim col As Integer'töltse ki a tömbötintA (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'ciklus a tömbön, és töltse ki az Excel programotRw = 0 és 2 közöttSzín = 0 és 3 közöttCella (rw + 1, col + 1). Érték = intA (rw, col)Következő oszlopKövetkező sorEnd Sub |
Az Excel táblázatot az alábbiak szerint kell kitölteni.
2D tömb feltöltése Excel adatokból
Az alábbi kód egy 2D tömböt tölt be egy Excel munkalapról, majd egy másik lapot tölt be az adatokkal.
1234567891011121314151617181920212223242526 | Részpopuláció2D ()'Hirdesse be a munkalapokatDim ws_Forrás munkalapkéntDim ws_Destination mint munkalap'Deklarálja a tömbötDim wsData (10, 2) Variantként'Adja meg a változókatDim rw egész számkéntDim col As Integer"lásd a forráslapotSet ws_Source = Munkalapok ("Sheet1")'szerezze be az információkat a forráslapról, és töltse ki a tömbötRw = LBound (wsData, 1) UBound (wsData, 1) eseténCol = LBound (wsData, 2) - UBound (wsData, 2) eseténwsData (rw, col) = ws_Source.Range ("A2"). Eltolás (rw, col). ÉrtékKövetkező oszlopKövetkező sor"lásd a rendeltetési lapotA ws_Destination = Munkalapok beállítása ("Sheet2")'töltse ki a céllapot a tömbbőlRw = LBound (wsData, 1) UBound (wsData, 1) eseténCol = LBound (wsData, 2) - UBound (wsData, 2) eseténws_Destination.Range ("A1"). Eltolás (rw, col). Value = wsData (rw, col)Következő oszlopKövetkező sorEnd Sub |
Átméretezés ReDim és Re-Dim Preserve használatával
Egy tömb átméretezhető a használatával ReDim.
1234567891011121314151617 | Sub Resize2D ()'deklarálja a tömbötDim varArray () mint Variant'deklarálja a tömb méretétReDim varArray (1, 2)varArray (0, 0) = "Mel Smith"varArray (0, 1) = "Fred Buckle"varArray (0, 2) = "Jane Eyre"varArray (1, 0) = "Könyvelő"varArray (1, 1) = "Titkár"varArray (1, 2) = "Doktor"'újra bejelenti a tömb méretétReDim varArray (0, 1)'újratelepíteni a tömbötvarArray (0, 0) = "Mel Smith"varArray (0, 1) = "Fred Buckle"End Sub |
A tömb újbóli bejelentésekor elveszíti a tömbben korábban tárolt adatokat, hacsak nem használja a ReDim Preserve nyilatkozat.
12345678910111213141516 | Sub Resize2D ()'deklarálja a Dim varArray () tömböt Variant -ként'deklarálja a tömb méretétReDim varArray (1, 2)varArray (0, 0) = "Mel Smith"varArray (0, 1) = "Fred Buckle"varArray (0, 2) = "Jane Eyre"varArray (1, 0) = "Könyvelő"varArray (1, 1) = "Titkár"varArray (1, 2) = "Doktor"'újra deklarálja a tömb méretétReDim Preverve varArray (1, 3)'töltse fel a tömböt további értékekkelvarArray (0, 3) = "Rob Barnes"varArray (1, 3) = "Vízvezeték -szerelő"End Sub |
A tömb utolsó dimenzióját csak akkor tudja átméretezni, ha az eredeti adatokat a következővel szeretné megőrizni: Re-Dim Preserve.
Amikor a hibakeresésre kattint, a hiba kiemelésre kerül, és azt mutatja, hogy a tömb első dimenziója nem azonos az első dimenzióval, amikor a tömb méretét eredetileg deklarálták.