VBA dünaamiline massiiv (Redim & Redim Preserve)

Lang L: none (table-of-contents)

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.

Te aitate arengu ala, jagades leht oma sõpradega

wave wave wave wave wave