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.