VBA ReDim | Käsittele dynaamisia taulukoita VBA ReDim Preservella

Excel VBA ReDim -lausunto

VBA Redim -lauseke on samanlainen kuin dim-lause, mutta ero on siinä, että sitä käytetään enemmän tallennustilan tallentamiseen tai varaamiseen tai muuttujan tai matriisin mukanaan olevan tallennustilan pienentämiseen, nyt lauseessa on kaksi tärkeää näkökohtaa: Säilytä, 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 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) = "Käytä" MyArray (5) " = "Nizzan päivän" loppuosa 

Dynaaminen taulukko ReDim-lauseella

Mutta dynaamisessa taulukossa näin ei ole, emme päätä alempaa ja ylempää arvoa hyvissä ajoin, vaan 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 ilmoitettava se ensin 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 taulukon kokoa käyttämällä sanaa "ReDim" koodin seuraavalla rivillä.

ReDim MyArray (1-6) merkkijonona

Kaikki matriisin nimeen edellisissä vaiheissa tallennetut arvot eli "Dim" -käskyn käyttäminen on nolla, ja "ReDim" -toiminnolla ilmoitetusta koosta tulee matriisin uusi koko.

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

Voit ladata tämän VBA ReDim Excel -mallin täältä - VBA ReDim Excel -malli

Esimerkki 1

Katso esimerkki ReDim-lauseen käytännöllisestä käytöstä. Seuraa ReDim-ohjelmaa 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, meillä pitäisi olla nämä arvot A1-, B1- ja C1-soluissa.

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

Kun taulukon nimelle on annettu 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ä matriisin pituutta 2 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)”, se 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ä.

$config[zx-auto] not found$config[zx-overlay] not found