VBA többdimenziós tömb (2D tömbök)

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.

Segít a fejlesztés a helyszínen, megosztva az oldalt a barátaiddal

wave wave wave wave wave