VBA Dynamic Array (Redim & Redim Preserve)

Tämä opetusohjelma osoittaa, kuinka dynaamisia matriiseja (redim ja redim säilyttää) käytetään VBA: ssa.

Dynaaminen järjestelmä

Dynaamiset taulukot ovat matriiseja, jotka voivat muuttaa kokoa (toisin kuin staattiset taulukot, jotka ovat staattisia).

Jos haluat julistaa dynaamisen taulukon, ilmoita taulukko, mutta jätä taulukon koko pois:

1 Dim strNames () merkkijonona

Sitten, ennen kuin voit määrittää arvoja taulukolle, sinun on käytettävä ReDim -lauseketta asettaaksesi taulukon haluamaasi kokoon:

1 ReDim strNames (1-3)

Nyt, milloin tahansa haluat muuttaa taulukkosi kokoa, käytä vain ReDimiä (tai ReDim Preserveä, kuten opimme alla).

Dynaamiset muunnelmat

Huomautus: Varianttijoukot ovat hieman erilaisia. Vaihtoehtoisten matriisien kanssa sinun ei tarvitse asettaa taulukon kokoa ReDimillä ennen arvojen määrittämistä.

12345678 Sub TestArray ()'ilmoittaa muuttujanDim varNames () Varianttina'täytä taulukkovarNames () = Array ("Fred", "Wilma", "Barney", "Betty")'palauta arvotMsgBox Join (varNames, ",")End Sub

Redim vs. Redim Preserve

The ReDim lauseke muuttaa taulukon kokoa, selvitys kaikki olemassa olevat arvot.

The ReDim Säilytä lauseke muuttaa taulukon kokoa, pitäminen ("Säilyttäminen") kaikki olemassa olevat arvot.

ReDimin käyttö

Käytännössä taulukon koon muuttaminen ReDimin avulla näyttää tältä:

123456789101112 AlatestiReDim ()'julistaa merkkijononDim strNames () merkkijonona'Muuta merkkijonon kokoa niin, että siihen mahtuu 3 arvoaReDim strNames (1-3)'täytä taulukko kolmella nimellästrNames (1) = "Mel"strNames (2) = "Steve"strNames (3) = "Bob"'näytä tulos välittömässä ikkunassaDebug.Print Join (strNames, vbCrLf)End Sub

ReDim Preserve -ohjelman käyttö

Tässä esimerkissä käytämme ReDimia alkuperäisen dynaamisen taulukon asettamiseen ja sitten ReDim Preserve muuttaaksesi taulukon kokoa, pitäminen alkuperäiset arvot:

1234567891011121314151617 AlatestiReDim ()'julistaa merkkijononDim strNames () merkkijonona'Muuta merkkijonon kokoa niin, että siihen mahtuu 3 arvoaReDim strNames (1-3)'täytä taulukkostrNames (1) = "Mel"strNames (2) = "Steve"strNames (3) = "Bob"'näytä tulos välittömässä ikkunassaDebug.Print Join (strNames, vbCrLf)'redim mutta säilytä tiedotReDim Säilytä strNames (1-4)strNames (4) = "Fred"'näytä tulos välittömässä ikkunassaDebug.Print Join (strNames, vbCrLf)End Sub

Jos et käytä SUOJELLA lause, menetät tiedot, jotka olivat aiemmin olleet taulukossa.

Yllä olevassa ikkunassa taulukko täytti Mel, Steve ja Bob. Kun se ilmoitettiin uudelleen, se poistaa nämä arvot ja palautti sen sijaan 3 tyhjää arvoa ja sitten arvon "Fred". Tämä johtuu SUOJELLA lausunto jätetään pois.

Tulet auttaa kehittämään sivuston jakaminen sivu ystävillesi

wave wave wave wave wave