VBA ReDim - Käsittele dynaamisia taulukoita VBA ReDim Preservella

Sisällysluettelo

Excel VBA ReDim -lausunto

VBA Redim -lauseke on samanlainen kuin dim-lause, mutta ero on siinä, että sitä käytetään varastointitilaan tai varaamaan enemmän tallennustilaa tai pienentämään muuttujan tai matriisin sisältämää tallennustilaa, nyt lauseessa on kaksi tärkeää näkökohtaa: Jos säilytystä käytetään tämän käskyn kanssa, se luo uuden erikokoisen taulukon ja jos säilytystä ei käytetä tämän käskyn kanssa, se vain muuttaa nykyisen muuttujan taulukon kokoa.

Taulukot ovat tärkeä osa VBA-koodausta. Matriisien avulla voimme tallentaa useamman kuin yhden arvon samaan muuttujaan kuin määritimme. Samoin kuin kuinka ilmoitamme muuttujan sanalla "Dim", meidän on ilmoitettava taulukon nimi myös käyttämällä "Dim".

Taulukon nimen ilmoittamiseksi meidän on ensin tunnistettava sellainen taulukko, jonka aiomme määritellä. Taulukoissa meillä on 5 tyyppiä.

  1. Staattinen taulukko
  2. Dynaaminen taulukko
  3. Yksiulotteinen taulukko
  4. Kaksiulotteinen taulukko
  5. Moniulotteinen taulukko

Staattisessa taulukossa excelissä päätämme matriisin alemman ja ylemmän arvon hyvissä ajoin ilmoittaessamme muuttujan. Katso esimerkiksi alla olevaa esimerkkiä.

Koodi:

Sub ReDim_Example1 () himmentää MyArray (1-5) merkkijonon loppuosana

Tässä MyArray on taulukon nimi, joka voi pitää arvon välillä 1 - 5. MyArray voi sisältää siinä 5 erilaista tulosta, kuten alla oleva.

Koodi:

Sub ReDim_Example1 () Dim MyArray (1-5) merkkijonona MyArray (1) = "Hei" MyArray (2) = "Hyvä" MyArray (3) = "Aamu" MyArray (4) = "Onko" MyArray (5) " = "Nizzan päivän" loppuosa

Dynaaminen taulukko ReDim-lauseella

Mutta dynaamisessa taulukossa tämä ei ole asia. Emme päätä alempaa ja ylempää arvoa hyvissä ajoin; pikemminkin määritämme vain taulukon nimen ja määritämme tietotyypin.

Sub ReDim_Example1 () Dim MyArray () merkkijonona Sub

Jotta matriisin nimi olisi dynaaminen, meidän on ensin ilmoitettava se sanalla "Hämärä", mutta älä valitse matriisin kokoa hyvissä ajoin. Nimeämme vain taulukon, jossa on tyhjät arvot sulkeissa (). Kun taulukko ei sisällä kokoa, sitä käsitellään dynaamisena taulukona.

Dim MyArray () merkkijonona

Heti kun mainitset taulukon koon sulkeissa, siitä tulee staattinen taulukko. Hämärtää MyArray (1-5) merkkijonona

Dynaamisessa taulukossa muutetaan aina matriisin kokoa käyttämällä sanaa "ReDim" koodin seuraavalla rivillä.

ReDim MyArray (1-6) merkkijonona

Kaikki matriisin nimelle edellisissä vaiheissa tallennetut arvot, eli "Dim" -käskyä käytettäessä, ovat nolla, ja "ReDim" -toiminnolla ilmoitetusta koosta tulee matriisin uusi koko.

Esimerkkejä VBA Redim -lausekkeen käytöstä

Esimerkki 1

Katso esimerkki ReDim-lauseen käytännöllisestä käytöstä. Ota ReDim käyttöön noudattamalla seuraavia ohjeita.

Vaihe 1: Luo ensin makron nimi.

Vaihe 2: Ilmoita taulukon nimi merkkijonoksi.

Koodi:

Sub ReDim_Example1 () Dim MyArray () merkkijonona Sub

Vaihe 3: Käytä nyt sanaa "Redim" ja määritä taulukon koko.

Koodi:

Sub ReDim_Example1 () Dim MyArray () merkkijonona ReDim MyArray (1-3) End Sub

Vaihe 4: Joten nyt taulukon nimessä "MyArray" voi olla täällä enintään 3 arvoa. Määritä arvo näille kolmelle matriisille kuten alla.

Koodi:

Sub ReDim_Example1 () Dim MyArray () merkkijonona ReDim MyArray (1-3) MyArray (1) = "Tervetuloa" MyArray (2) = "-" MyArray (3) = "VBA" End Sub

Joten ensimmäinen taulukko on sama kuin sana "Welcome", toinen taulukko on sama kuin sana "to" ja kolmas taulukko on sama kuin sana "VBA".

Vaihe 5: Tallenna nämä taulukon arvot nyt soluihin.

Koodi:

Sub ReDim_Example1 () Dim MyArray () merkkijonona ReDim MyArray (1-3) MyArray (1) = "Tervetuloa" MyArray (2) = "-" MyArray (3) = "VBA" -alue ("A1"). Arvo = MyArray (1) Range ("B1"). Arvo = MyArray (2) Range ("C1"). Arvo = MyArray (3) End Sub

Vaihe 6: Jos suoritat tämän koodin, nämä arvot pitäisi olla vastaavasti A1-, B1- ja C1-soluissa.

Esimerkki # 2 - Muuta taulukon kokoa samalla kun muistat vanhat arvot.

Kun taulukon nimelle on määritetty arvot, voimme myös muuttaa kokoa milloin tahansa menettelyn vaiheessa sanalla "ReDim Preserve".

Oletetaan, että olet jo ilmoittanut taulukon nimen ja antanut arvot niille taulukon nimille kuten alla.

Nyt haluat lisätä taulukon pituutta 2: lla, eli 5: llä. Tällöin voimme käyttää sanaa VBA "ReDim Preserve" muuttaa matriisin pituuden kokoa muistamaan myös vanhat arvot.

Koodi:

Sub ReDim_Example2 () Dim MyArray () merkkijonona ReDim MyArray (3) MyArray (1) = "Tervetuloa" MyArray (2) = "-" MyArray (3) = "VBA" ReDim Preserve MyArray (4) MyArray (4) = "Merkki 1" -alue ("A1"). Arvo = MyArray (1) -alue ("B1"). Arvo = MyArray (2) -alue ("C1"). Arvo = MyArray (3) -alue ("D1"). Arvo = MyArray (4) End Sub

Nyt voimme määrittää taulukolle vielä kaksi arvoa.

Koodi:

Sub ReDim_Example2 () Dim MyArray () merkkijonona ReDim MyArray (3) MyArray (1) = "Tervetuloa" MyArray (2) = "-" MyArray (3) = "VBA" ReDim Preserve MyArray (4) MyArray (4) = "Merkki 1" -alue ("A1"). Arvo = MyArray (1) -alue ("B1"). Arvo = MyArray (2) -alue ("C1"). Arvo = MyArray (3) -alue ("D1"). Arvo = MyArray (4) End Sub

Tallenna nämä arvot nyt soluihin.

Koodi:

Sub ReDim_Example2 () Dim MyArray () merkkijonona ReDim MyArray (3) MyArray (1) = "Tervetuloa" MyArray (2) = "-" MyArray (3) = "VBA" ReDim Preserve MyArray (4) MyArray (4) = "Merkki 1" -alue ("A1"). Arvo = MyArray (1) -alue ("B1"). Arvo = MyArray (2) -alue ("C1"). Arvo = MyArray (3) -alue ("D1"). Arvo = MyArray (4) End Sub

Suorita nyt makro ja katso mitä tapahtuu.

Joten saimme uuden sanan D1-soluun.

Syy, miksi meidän on käytettävä sanaa "säilytä", koska taulukon tulisi muistaa vanhat matriisiarvot menettelyssä.

Kun jätät huomiotta sanan "säilytä", se ei muista vanhoja arvoja.

Muistettavaa täällä

  • ReDim voi pitää vain matriisin viimeisen arvon, ei monia arvoja. Esimerkiksi, emme voi käyttää tätä koodia ”ReDim Preserve MyArray (4–5)”. Tämä heittää virheen.
  • Emme voi ReDim-staattisia taulukoita. Heti kun määrität taulukon koon sulkeisiin, siitä tulee staattinen taulukko.
  • ReDim-ohjelmaa käyttämällä emme voi muuttaa tietotyyppiä. Taulukossa voi olla mitä tahansa tietotyyppiä, jonka olemme määrittäneet taulukon ilmoittamisen yhteydessä.

Mielenkiintoisia artikkeleita...