See õpetus näitab, kuidas kasutada VBA -s dünaamilisi massiive (redimi ja redimi säilitamine).
Dünaamiline massiiv
Dünaamilised massiivid on massiivid, mis võivad suurusi muuta (erinevalt staatilised massiivid, mis on staatilised).
Dünaamilise massiivi deklareerimiseks deklareerige massiiv, kuid jätke massiivi suurus vahele:
1 | Dim strNames () stringina |
Seejärel peate enne massiivi väärtuste määramist kasutama massiivi soovitud suurusele ReDim Statement:
1 | ReDim strNames (1 kuni 3) |
Nüüd, kui soovite oma massiivi suurust muuta, kasutage lihtsalt ReDimi (või ReDim Preserve'i, nagu me allpool õpime).
Dünaamilised variatsioonimassiivid
Märkus. Variantide massiivid on veidi erinevad. Variantide massiivide puhul ei pea te enne väärtuste määramist ReDimiga massiivi suurust määrama.
12345678 | Sub TestArray ()'deklareerige muutujaDim varNames () Variantina'täitke massiivvarNames () = massiiv ("Fred", "Wilma", "Barney", "Betty")'tagastage väärtusedMsgBoxi liitumine (varNames, ",")End Sub |
Redim vs Redim Preserve
The ReDim avaldus muudab massiivi suurust, puhastamine kõik olemasolevad väärtused.
The ReDim Preserve avaldus muudab massiivi suurust, pidamine (“Säilitades”) kõik olemasolevad väärtused.
ReDimi kasutamine
Praktikas näeb massiivi suuruse muutmine ReDimiga välja selline:
123456789101112 | AlamkatseReDim ()'deklareerige stringimassiivDim strNames () stringina'muutke stringimassiivi suurust, et oleks võimalik hoida 3 väärtustReDim strNames (1 kuni 3)'täitke massiiv kolme nimegastrNames (1) = "Mel"strNames (2) = "Steve"strNames (3) = "Bob"'näita tulemust kohe aknasSilumine. Prindi liitumine (strNames, vbCrLf)End Sub |
ReDim Preserve kasutamine
Selles näites kasutame esialgse dünaamilise massiivi seadistamiseks ReDimi ja seejärel massiivi suuruse muutmiseks ReDim Preserve, pidamine esialgsed väärtused:
1234567891011121314151617 | AlamkatseReDim ()'deklareerige stringimassiivDim strNames () stringina'muutke stringimassiivi suurust, et oleks võimalik hoida 3 väärtustReDim strNames (1 kuni 3)'täitke massiivstrNames (1) = "Mel"strNames (2) = "Steve"strNames (3) = "Bob"'näita tulemust kohe aknasSilumine. Prindi liitumine (strNames, vbCrLf)redimeerige, kuid säilitage andmedReDim Säilita strNames (1 kuni 4)strNames (4) = "Fred"'näita tulemust kohe aknasSilumine. Prindi liitumine (strNames, vbCrLf)End Sub |
Kui te ei kasuta SÄILITA avalduse, kaotate varem massiivis olnud andmed.
Ülalolevas aknas asus massiiv Mel, Steve ja Bob. Kui see uuesti deklareeriti, eemaldas ta need väärtused ja tagastas selle asemel 3 tühja väärtust ning seejärel väärtuse „Fred”. Selle põhjuseks on SÄILITA avaldus jäetakse välja.