Hogyan lehet a ReDim Preserve 2D tömböt az Excel VBA-ban (2 egyszerű módja)

  • Ossza Meg Ezt
Hugh West

A tömb olyan változó, amely azonos típusú adatokat tárol. Ha csak egy sor vagy egy oszlop adat van, akkor egydimenziós tömbnek nevezzük. Ha azonban egynél több sor és oszlop van, akkor 2D-s tömbnek nevezzük. Használjuk a ReDim egy tömb átméretezéséhez a VBA-ban. Ezen kívül használjuk a Megőrizze kulcsszó a ReDim hogy a régi adatok érintetlenül maradjanak. Ez a cikk megmutatja, hogy 2 gyors módja annak, hogy " ReDim megőrzése " a 2D tömb a oldalon. Excel VBA .

Gyakorlati munkafüzet letöltése

Makró a ReDim Preserve 2D.xlsm megőrzésére

2 praktikus megközelítés a ReDim Preserve 2D tömb megőrzéséhez az Excel VBA-ban

Ez az alapadatkészlet egy 2D tömb három sorral és két oszloppal. Először is, létrehozzuk ezt a tömböt. Ezután hozzáadunk egy újabb oszlopot ehhez a tömbhöz. A " ReDim megőrzése ". Ezen kívül bemutatjuk, hogy mi történik, ha nem használjuk ezt.

Alapértelmezés szerint csak a tömb utolsó dimenzióját tudjuk átméretezni (azaz az oszlopokat vagy a felső határt). Átalakítjuk a tömböt, majd megváltoztatjuk az utolsó dimenziót, majd ismét átalakítjuk, hogy átméretezzük mindkét dimenziót a táblázatban. 2D tömb Excel VBA-ban.

1. ReDim Az utolsó dimenzió megőrzése 2D tömb

Először definiáljuk a 2D tömb dinamikusnak. Ezután a ReDim utasítással egy három soros és két oszlopos tömböt hozunk létre. Végül pedig a ReDim utasítás ismét a Megőrizze kulcsszó a kétdimenziós tömb felső határának növelésére.

Lépések:

  • Kezdetnek nyomja meg a ALT+F11 hogy felhozza a VBA modul Alternatívaként ezt megteheted a Fejlesztő lap → válasszon Visual Basic .
  • Ezután, a Beillesztés lap → válasszon Modul Ide írjuk be a VBA kódot.

  • Ezután írja be a következő kódot a Modul ablak.
 Sub Redim_Preserve_2D_Array_Row() Dim Our_Array() As Variant ReDim Our_Array(1 To 3, 1 To 2) Our_Array(1, 1) = "Rachel" Our_Array(2, 1) = "Ross" Our_Array(3, 1) = "Joey" Our_Array(1, 2) = 25 Our_Array(2, 2) = 26 Our_Array(3, 2) = 25 Range("C6:D8").Value = Our_Array End Sub 

VBA kód lebontása

  • Először is, hívjuk a Aleljárás " Redim_Preserve_2D_Array_Row (Redim_Preserve_2D_Array_Row) ".
  • Ezután deklaráljuk a változót Our_Array dinamikus tömbként.
  • Ezután meghatározzuk a tömb méretét. Az alsó korlát a következő 3 , a felső korlát 2 , és mindkettő a 1 .
  • Ezután értékeket rendelünk a tömbhöz.
  • Ezután az értékeket bevisszük a C6:D8 cellatartomány.
  • Ezután végrehajtjuk a kódot.
  • Szóval, Mentés a Modul és nyomja meg a Fuss .

  • Ennek eredményeképpen az értékeket a meghatározott cellatartományokba adja vissza. Láthatjuk, hogy a " Rachel " a sorban 1 és oszlop 1 pozíció, amelyet a következőképpen határoztak meg ( 1,1 ) a VBA-kódban.

  • Most átméretezzük a tömböt.
  • Tehát, adjuk hozzá ezt az előző kódhoz, és távolítsuk el az első Range.Value utasítás . Továbbá, hogy a kód hogyan néz ki, ahogy az alábbi pillanatképen látható.
 ReDim Our_Array(1 To 3, 1 To 3) Our_Array(1, 3) = "Texas" Our_Array(2, 3) = "Mississippi" Our_Array(3, 3) = "Utah" Range("C6:E8").Value = Our_Array 

  • Itt a felső korlátot megnöveltük ( 1 A címre. 2 ) a ( 1 A címre. 3 ) által 1 .
  • Ezután hozzáadtuk az értékeket a tömbhöz.
  • Ha most végrehajtjuk ezt a kódot, akkor látni fogjuk, hogy a korábbi értékek nem maradnak meg. A korábbi értékek üres értéket fognak visszaadni.

  • Most ezt úgy tudjuk kijavítani, hogy hozzáadjuk a Preserve kulcsszó a ReDim utasítás .
  • Végül a teljes kódunk a következő lesz.
 Option Explicit Sub Redim_Preserve_2D_Array_Row() Dim Our_Array() As Variant ReDim Our_Array(1 To 3, 1 To 2) Our_Array(1, 1) = "Rachel" Our_Array(2, 1) = "Ross" Our_Array(3, 1) = "Joey" Our_Array(1, 2) = 25 Our_Array(2, 2) = 26 Our_Array(3, 2) = 25 ReDim Preserve Our_Array(1 To 3, 1 To 3) Our_Array(1, 3) = "Texas" Our_Array(2, 3) = "Mississippi" Our_Array(3, 3) = "Utah" Range("C6:E8").Value =Our_Array End Sub 

  • Ha most Fuss ezt a kódot, akkor a kimenet így fog kinézni. Így tehát " ReDim megőrzése " az utolsó dimenzió egy 2D tömb az Excel VBA-ban... A következő módszer megmutatja, hogyan " ReDim megőrzése " és a tömb mindkét dimenziójának átméretezése.

Bővebben: VBA az egyedi értékek megszerzéséhez az oszlopból az Excel-táblázatba (3 kritérium)

Hasonló olvasmányok

  • Hogyan nevezzen el egy táblázatos tömböt az Excelben (egyszerű lépésekkel)
  • Excel VBA a CSV fájl olvasásához a tömbbe (4 ideális példa)
  • Hogyan alakítsuk át a tartományt az Excel VBA-ban lévő tömbökké (3 mód)
  • Excel VBA: Duplikátumok eltávolítása egy tömbből (2 példa)

2. ReDim mindkét dimenzió megőrzése 2D-s tömb az Excel VBA-ban

Ebben az utolsó módszerben megmutatjuk a lépéseket, hogy átméretezzük és " ReDim megőrzése " a 2D tömb Itt a VBA transzponálás függvényt a tömb alsó korlátjának átméretezésére. Ha az első módszerrel próbálnánk átméretezni a tömb alsó korlátját, akkor a " Tartományon kívüli index " hiba. Most pedig minden további nélkül lássuk, hogyan tudjuk ezt kijavítani és elérni a célunkat.

Lépések:

  • Először is, az első módszer szerint , hozza fel a Modul ablak.
  • Másodszor, a következő kódsorokat illessze be az első kódba.
 Our_Array = Application.Transpose(Our_Array) ReDim Preserve Our_Array(1 To 3, 1 To 4) Our_Array = Application.Transpose(Our_Array) Our_Array(4, 1) = "Monica" Our_Array(4, 2) = 26 Our_Array(4, 3) = "New Mexico" Range("C6:E9").Value = Our_Array 
  • A végső módszer kódja pedig így néz ki.
 Option Explicit Sub ReDim_Preserve_2D_Array_Both_Dimensions() Dim Our_Array() As Variant ReDim Our_Array(1 To 3, 1 To 2) Our_Array(1, 1) = "Rachel" Our_Array(2, 1) = "Ross" Our_Array(3, 1) = "Joey" Our_Array(1, 2) = 25 Our_Array(2, 2) = 26 Our_Array(3, 2) = 25 ReDim Preserve Our_Array(1 To 3, 1 To 3) Our_Array(1, 3) = "Texas" Our_Array(2, 3) = "Mississippi" Our_Array(3, 3) = "Utah" Our_Array =Application.Transpose(Our_Array) ReDim Preserve Our_Array(1 To 3, 1 To 4) Our_Array = Application.Transpose(Our_Array) Our_Array(4, 1) = "Monica" Our_Array(4, 2) = 26 Our_Array(4, 3) = "New Mexico" Range("C6:E9").Value = Our_Array End Sub 

VBA kód lebontása

  • Először is, hívjuk a Aleljárás " ReDim_Preserve_2D_Array_Both_Dimensions (ReDim_Preserve_2D_Array_Both_Dimensions) ".
  • Ezután a kódok többi része egészen a VBA transzponálás függvény ugyanaz, mint az első kódban.
  • Itt a tömböt transzponáljuk.
  • Ezután növeljük a tömb felső határát.
  • Ezután újra transzponáljuk a tömböt. Ezért végül ez megváltoztatja az alsó korlátot.
  • Ezután beírjuk az átméretezett tömb értékeit, miközben megőrizzük a régi adatokat.
  • Végül írjuk ki az értékeket a cellatartományba C6:E9 .
  • Utána, az első módszer szerint , Fuss ez a kód.
  • Így láthatóvá válik, hogy a kód hogyan őrzi meg a 2D tömb a " ReDim megőrzése " és a VBA transzponálás funkció.

Bővebben: VBA a tömb transzponálásához az Excelben (3 módszer)

Emlékezetes dolgok

  • ReDim megőrzése nem változtathatja meg a tömb alsó korlátját. Ehhez a Transpose funkció.
  • Csak a ReDim dinamikus tömbökön.

Következtetés

Megmutattunk két gyors módszert arra, hogy " ReDim megőrzése " a 2D array Excel VBA-ban. Ha bármilyen problémával szembesül ezekkel a módszerekkel kapcsolatban, vagy bármilyen visszajelzése van számomra, nyugodtan írja meg az alábbi megjegyzéseket. Továbbá, látogasson el a honlapunkra ExcelWIKI további Excelhez kapcsolódó cikkekért. Köszönjük az olvasást, továbbra is kiválóan teljesítünk!

Hugh West nagy tapasztalattal rendelkező Excel-oktató és elemző, több mint 10 éves tapasztalattal az iparágban. Számvitel és pénzügy szakos alapdiplomát, valamint üzleti adminisztrációból mesterképzést szerzett. Hugh szenvedélye a tanítás, és egyedülálló tanítási megközelítést dolgozott ki, amely könnyen követhető és érthető. Az Excelben szerzett szakértői tudása világszerte több ezer diáknak és szakembernek segített abban, hogy készségeiket és karrierjüket kiválóan teljesítsék. Hugh blogján keresztül megosztja tudását a világgal, ingyenes Excel-oktatóanyagokat és online képzéseket kínálva, hogy segítse az egyéneket és a vállalkozásokat teljes potenciáljuk kibontakoztatásában.