VBA ReDim | Kezelje a dinamikus tömböket a VBA ReDim Preserve használatával

Excel VBA ReDim nyilatkozat

A VBA Redim utasítás hasonló a dim utasításhoz, de a különbség az, hogy több tárhely tárolására vagy kiosztására vagy egy változó vagy egy tömb tárterületének csökkentésére szolgál, most két fontos szempontot használunk az utasítással: a Megőrzés, Ha a säilöt használjuk ezzel az utasítással, akkor új tömböt hoz létre, más-más méretben, és ha a säilöt nem használjuk ezzel az utasítással, akkor csak megváltoztatja az aktuális változó tömb méretét.

A tömbök a VBA kódolás fontos részét képezik. A tömbök segítségével több értéket is tárolhatunk ugyanabban a változóban, amelyet definiáltunk. Hasonlóan ahhoz, ahogyan a változót a „Dim” szóval deklaráljuk, hasonlóan a „Dim” használatával kell deklarálnunk a tömb nevét is.

A tömb nevének deklarálásához először meg kell határoznunk azt a fajta tömböt, amelyet definiálni fogunk. A tömbökben 5 típusunk van.

  1. Statikus tömb
  2. Dinamikus tömb
  3. Egydimenziós tömb
  4. Kétdimenziós tömb
  5. Többdimenziós tömb

Az excel statikus tömbben a változó deklarálásakor jó előre eldöntjük a tömb alsó és felső értékét. Nézze meg például az alábbi példát.

Kód:

 Sub ReDim_Example1 () Dim MyArray (1 - 5), mint String End Sub 

Itt a MyArray annak a tömbnek a neve, amely 1 és 5 közötti értéket képes megtartani. A MyArray 5 különböző eredményt képes befogadni benne, mint az alábbiakban.

Kód:

 Sub ReDim_Example1 () Dim MyArray (1–5) Karakterláncként MyArray (1) = "Szia" MyArray (2) = "Jó" MyArray (3) = "Reggel" MyArray (4) = "Van" MyArray (5) " = "Szép nap" End Sub 

Dinamikus tömb ReDim utasítással

De a dinamikus tömbben ez nem így van, nem fogjuk jó előre eldönteni az alsó és a felső értéket, inkább csak meghatározzuk a tömb nevét és adattípust rendelünk hozzá.

 Sub ReDim_Example1 () Dim MyArray () mint karakterlánc vége Sub 

A tömbnév dinamikussá tételéhez először a „Dim” szóval kell deklarálnunk, de ne előre határozzuk meg a tömb méretét. Csak egy üres tömböt nevezünk meg a zárójelben (). Ha a tömb nem tartalmaz méretet, akkor azt dinamikus tömbként kezeljük.

Dim MyArray () karakterláncként

Abban a pillanatban, amikor megemlíti a zárójelben lévő tömb méretét, statikus tömb lesz. Dim MyArray (1–5) karakterláncként

A dinamikus tömbben mindig átméretezzük a tömb méretét a „ReDim” szó használatával a kód következő sorában.

ReDim MyArray (1–6) karakterláncként

Bármely érték, amelyet az előző lépésekben tároltunk a tömb nevére, azaz a „Dim” utasítás használatával, nullát jelent, és a „ReDim” használatával deklarált méret lesz a tömb új mérete.

Példák a VBA Redim utasítás használatára

Ezt a VBA ReDim Excel sablont innen töltheti le - VBA ReDim Excel sablont

1. példa

Vessen egy pillantást a „ReDim” utasítás gyakorlati használatára. Kövesse az alábbi lépéseket a „ReDim” alkalmazásához.

1. lépés: Először hozzon létre egy makrónevet.

2. lépés: Nyilvánítson tömbként egy tömb nevet.

Kód:

 Sub ReDim_Example1 () Dim MyArray () mint karakterlánc vége Sub 

3. lépés: Most használja a „Redim” szót, és rendelje hozzá a tömb méretét.

Kód:

 Sub ReDim_Example1 () Dim MyArray () Karakterláncként ReDim MyArray (1-3) Vége Sub 

4. lépés: Tehát a „MyArray” tömbnév legfeljebb 3 értéket tartalmazhat itt. Rendelje hozzá az értéket ehhez a 3 tömbhöz, mint az alábbi.

Kód:

 Sub ReDim_Example1 () Dim MyArray () karakterláncként ReDim MyArray (1-3) MyArray (1) = "Welcome" MyArray (2) = "to" MyArray (3) = "VBA" End Sub 

Tehát az első tömb megegyezik a „Welcome” szóval, a második tömb egyenlő a „to” szóval, a harmadik tömb pedig a „VBA” szóval.

5. lépés: Most tárolja ezeket a tömbértékeket a cellákban.

Kód:

 Sub ReDim_Example1 () Dim MyArray () karakterláncként ReDim MyArray (1-3) MyArray (1) = "Welcome" MyArray (2) = "to" MyArray (3) = "VBA" Range ("A1"). Érték = MyArray (1) tartomány ("B1"). Érték = MyArray (2) tartomány ("C1"). Érték = MyArray (3) End Sub 

6. lépés: Ha futtatja ezt a kódot, akkor ezeket az értékeket az A1, B1 és C1 cellában kell megadnunk.

2. példa - A tömb méretének átméretezése a régi értékek megjegyzése közben.

Miután a tömb neve hozzárendelt értékeket, az eljárás bármely időpontjában átméretezhetjük a „ReDim Preserve” szó használatával is.

Tegyük fel, hogy már deklarált egy tömb nevet, és értékeket rendelt a tömb nevéhez, mint az alábbiak.

Most szeretné növelni a tömb hosszát 2, azaz 5-tel. Ebben az esetben használhatjuk a VBA „ReDim Preserve” szót a tömb hosszának átméretezéséhez, hogy emlékezzünk a régi értékekre is.

Kód:

 Sub ReDim_Example2 () Dim MyArray () Karaktersorozatként ReDim MyArray (3) MyArray (1) = "Welcome" MyArray (2) = "to" MyArray (3) = "VBA" ReDim Preserve MyArray (4) MyArray (4) = "1. karakter" Tartomány ("A1"). Érték = MyArray (1) Tartomány ("B1"). Érték = MyArray (2) Tartomány ("C1"). Érték = MyArray (3) Tartomány ("D1"). Érték = MyArray (4) End Sub 

Most még két értéket rendelhetünk a tömbhöz.

Kód:

 Sub ReDim_Example2 () Dim MyArray () Karaktersorozatként ReDim MyArray (3) MyArray (1) = "Welcome" MyArray (2) = "to" MyArray (3) = "VBA" ReDim Preserve MyArray (4) MyArray (4) = "1. karakter" Tartomány ("A1"). Érték = MyArray (1) Tartomány ("B1"). Érték = MyArray (2) Tartomány ("C1"). Érték = MyArray (3) Tartomány ("D1"). Érték = MyArray (4) End Sub 

Most tárolja ezeket az értékeket a cellákban.

Kód:

 Sub ReDim_Example2 () Dim MyArray () Karaktersorozatként ReDim MyArray (3) MyArray (1) = "Welcome" MyArray (2) = "to" MyArray (3) = "VBA" ReDim Preserve MyArray (4) MyArray (4) = "1. karakter" Tartomány ("A1"). Érték = MyArray (1) Tartomány ("B1"). Érték = MyArray (2) Tartomány ("C1"). Érték = MyArray (3) Tartomány ("D1"). Érték = MyArray (4) End Sub 

Most futtassa a makrót, és nézze meg, mi történik

Tehát megkaptuk az új szót a D1 cellában.

Az ok, amiért a „megőrzés” szót kell használnunk, mert a tömbnek emlékeznie kell a régi tömb értékekre az eljárás során.

Abban a pillanatban, amikor figyelmen kívül hagyja a „megőrzés” szót, nem fog emlékezni a régi értékekre.

Amire itt emlékezni kell

  • ReDim can only hold the last value of the array, not the many values. For example, we cannot use this code “ReDim Preserve MyArray(4 to 5)”, this will throw the error.
  • We cannot ReDim static arrays. The moment you assign the size of the array inside the parenthesis it becomes a static array.
  • Using ReDim we cannot change the data type. The array can hold whatever the data type we have assigned while declaring the array.