Ez az oktatóanyag bemutatja a dinamikus tömbök (redim és redim megőrzés) használatát a VBA -ban.
Dinamikus tömb
Dinamikus tömbök tömbök, amelyek megváltoztathatják a méreteket (szemben statikus tömbök, amelyek statikusak).
Dinamikus tömb deklarálásához deklarálja a tömböt, de hagyja ki a tömb méretét:
1 | Dim strNames () karakterláncként |
Ezután, mielőtt értékeket rendelhet a tömbhöz, a ReDim utasítással kell beállítania a tömböt a kívánt méretre:
1 | ReDim strNames (1-3) |
Most, amikor bármikor meg akarja változtatni a tömb méretét, egyszerűen használja a ReDim -et (vagy a ReDim Preserve -t, ahogy az alábbiakban megtudjuk).
Dinamikus variáns tömbök
Megjegyzés: A variáns tömbök kissé eltérnek egymástól. A változatos tömböknél nem kell beállítani a tömb méretét a ReDim segítségével az értékek hozzárendelése előtt.
12345678 | Sub TestArray ()'deklarálja a változótDim varNames () Változatként'töltse ki a tömbötvarNames () = Array ("Fred", "Wilma", "Barney", "Betty")'adja vissza az értékeketMsgBox csatlakozás (varNames, ",")End Sub |
Redim vs Redim Preserve
Az ReDim az utasítás átméretezi a tömböt, klíring minden létező érték.
Az ReDim Preserve az utasítás átméretezi a tömböt, tartása („Megőrzése”) minden létező értéket.
A ReDim használata
A gyakorlatban a tömb átméretezése ReDim segítségével így néz ki:
123456789101112 | Sub TestReDim ()'deklarálja a karakterlánc -tömbötDim strNames () karakterláncként'méretezze át a karakterlánc tömbjét, hogy 3 értéket tudjon tárolniReDim strNames (1-3)'töltse fel a tömböt 3 névvelstrNames (1) = "Mel"strNames (2) = "Steve"strNames (3) = "Bob"'mutassa meg az eredményt a közvetlen ablakbanHibakeresés. Nyomtatási csatlakozás (strNames, vbCrLf)End Sub |
A ReDim Preserve használata
Ebben a példában a ReDim -et fogjuk használni a kezdeti dinamikus tömb beállításához, majd a ReDim Preserve -t a tömb átméretezéséhez, tartása az eredeti értékek:
1234567891011121314151617 | Sub TestReDim ()'deklarálja a karakterlánc -tömbötDim strNames () karakterláncként'méretezze át a karakterlánc tömbjét, hogy 3 értéket tudjon tárolniReDim strNames (1-3)'töltse ki a tömbötstrNames (1) = "Mel"strNames (2) = "Steve"strNames (3) = "Bob"'mutassa meg az eredményt a közvetlen ablakbanHibakeresés. Nyomtatási csatlakozás (strNames, vbCrLf)redim, de mentse az adatokatReDim Preserve strNames (1-4)strNames (4) = "Fred"'mutassa meg az eredményt a közvetlen ablakbanHibakeresés. Nyomtatási csatlakozás (strNames, vbCrLf)End Sub |
Ha nem használja a TARTÁS utasítást, elveszítené azokat az adatokat, amelyek korábban a tömbben voltak.
A fenti ablakban a tömb Mel, Steve és Bob lakta. Amikor újra bejelentették, eltávolította ezeket az értékeket, és helyette 3 üres értéket, majd a „Fred” értéket adott vissza. Ennek oka az TARTÁS kijelentés elmarad.