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

Tartalomjegyzék

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 a utasítás megőrzéséhez: 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, a „Dim” használatával is be kell jelentenünk a tömb nevét.

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 karakterlánc vége Sub

Itt a MyArray a tömb neve, amely 1 és 5 közötti értéket képes megtartani. A MyArray 5 különböző eredményt tartalmazhat, mint az alábbiak.

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 felső értéket; inkább csak meghatározzuk a tömb nevét és hozzárendeljük az adattípust.

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

A tömbnév dinamikussá tétele érdekében 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 tartalmazza a 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 belőle. 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 a tömb nevére tároltunk, azaz a „Dim” utasítás használatával null, akkor 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

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 az „Welcome” szóval, a második tömb megegyezik 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:

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 ezeknek az értékeknek az A1, B1 és C1 cellákban kell lenniük.

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 nevéhez hozzárendelt értékeket, az eljárás bármely időpontjában átméretezhetjük a „ReDim Preserve” szó használatával is.

Assume you have already declared an array name and assigned values to those array name like the below one.

Now you would like to increase the array length by 2, i.e., 5. In this case, we can use the word VBA “ReDim Preserve” to resize the array length to remember the old values as well.

Code:

Sub ReDim_Example2() Dim MyArray() As String ReDim MyArray(3) MyArray(1) = "Welcome" MyArray(2) = "to" MyArray(3) = "VBA" ReDim Preserve MyArray(4) MyArray(4) = "Character 1" Range("A1").Value = MyArray(1) Range("B1").Value = MyArray(2) Range("C1").Value = MyArray(3) Range("D1").Value = MyArray(4) End Sub

Now we can assign two more values to the array.

Code:

Sub ReDim_Example2() Dim MyArray() As String ReDim MyArray(3) MyArray(1) = "Welcome" MyArray(2) = "to" MyArray(3) = "VBA" ReDim Preserve MyArray(4) MyArray(4) = "Character 1" Range("A1").Value = MyArray(1) Range("B1").Value = MyArray(2) Range("C1").Value = MyArray(3) Range("D1").Value = MyArray(4) End Sub

Now store these values in cells.

Code:

Sub ReDim_Example2() Dim MyArray() As String ReDim MyArray(3) MyArray(1) = "Welcome" MyArray(2) = "to" MyArray(3) = "VBA" ReDim Preserve MyArray(4) MyArray(4) = "Character 1" Range("A1").Value = MyArray(1) Range("B1").Value = MyArray(2) Range("C1").Value = MyArray(3) Range("D1").Value = MyArray(4) End Sub

Now run the macro and see what happens.

So we got the new word in the D1 cell.

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, az nem fog emlékezni a régi értékekre.

Amire itt emlékezni kell

  • A ReDim csak a tömb utolsó értékét tudja tárolni, a sok értéket nem. Például nem használhatjuk ezt a kódot: „ReDim Preserve MyArray (4–5)”. Ez dobja a hibát.
  • Nem tudjuk ReDim statikus tömböket használni. Abban a pillanatban, amikor a zárójelen belül hozzárendeli a tömb méretét, statikus tömb lesz.
  • A ReDim használatával nem tudjuk megváltoztatni az adattípust. A tömb bármilyen adattípust tartalmazhat, amelyet a tömb deklarálásakor hozzárendeltünk.

érdekes cikkek...