VBA ReDim | Tvarkykite dinaminius masyvus naudodami „VBA ReDim Preserve“

„Excel VBA ReDim“ pareiškimas

„VBA Redim“ sakinys yra panašus į „dim“ teiginį, tačiau skirtumas yra tas, kad jis naudojamas saugoti ar paskirstyti daugiau vietos arba sumažinti saugyklos vietą, kurią kintamasis ar masyvas turi su savimi, dabar yra du svarbūs aspektai, naudojami su sakiniu yra „Išsaugoti“, jei naudojant šį sakinį naudojamas konservas, jis sukuria naują masyvą su skirtingu dydžiu, o jei konservas nenaudojamas su šiuo sakiniu, jis tiesiog pakeičia dabartinio kintamojo masyvo dydį.

Masyvai yra svarbi VBA kodavimo dalis. Naudodami masyvus, tame pačiame kintamajame galime laikyti daugiau nei vieną reikšmę. Kaip ir kaip mes deklaruojame kintamąjį naudodami žodį „Dim“, taip pat turime deklaruoti masyvo pavadinimą naudodami „Dim“.

Norėdami deklaruoti masyvo pavadinimą, pirmiausia turime nustatyti masyvo rūšį, kurią ketiname apibrėžti. Masyvuose turime 5 tipus.

  1. Statinis masyvas
  2. Dinaminis masyvas
  3. Vieno matmens masyvas
  4. Dviejų matmenų masyvas
  5. Daugialypis masyvas

„Excel“ statiniame masyve mes iš anksto nuspręsime žemesnę ir didesnę masyvo vertę, deklaruodami kintamąjį. Pavyzdžiui, pažiūrėkite į žemiau pateiktą pavyzdį.

Kodas:

 Sub ReDim_Example1 () Dim MyArray (1–5) kaip eilutės pabaigos antrinis 

Čia „ MyArray“ yra masyvo pavadinimas, kurio vertė gali būti nuo 1 iki 5. „MyArray“ gali turėti 5 skirtingus rezultatus, kaip antai žemiau.

Kodas:

 Sub ReDim_Example1 () Dim MyArray (1–5) Kaip eilutė MyArray (1) = "Sveiki" MyArray (2) = "Geras" MyArray (3) = "Rytas" MyArray (4) = "Turėkite" MyArray (5) " = "Gražios dienos" pabaigos antrinis 

Dinaminis masyvas su „ReDim“ pareiškimu

Bet dinaminiame masyve taip nėra, mes iš anksto nenuspręsime dėl apatinės ir viršutinės vertės, o tiesiog apibrėžsime masyvo pavadinimą ir priskirsime duomenų tipą.

 Sub ReDim_Example1 () Dim MyArray () Kaip eilutės pabaiga Sub 

Norėdami, kad masyvo pavadinimas būtų dinamiškas, pirmiausia turime jį paskelbti žodžiu „Dim“, bet iš anksto nenuspręskite masyvo dydžio. Mes tiesiog įvardijame masyvą su tuščiomis reikšmėmis skliaustuose (). Kai masyve nėra dydžio, jis traktuojamas kaip dinaminis masyvas.

Dim MyArray () kaip eilutė

Tuo metu, kai pamini masyvo dydį skliaustuose, jis tampa statiniu masyvu. „Dim MyArray“ (nuo 1 iki 5) kaip eilutė

Dinaminiame masyve mes visada keičiame masyvo dydį, kitoje kodo eilutėje naudodami žodį „ReDim“.

„ReDim MyArray“ (nuo 1 iki 6) kaip eilutė

Bet kokia reikšmė, išsaugota masyvo pavadinime ankstesniuose veiksmuose, ty naudojant „Dim“ sakinį, yra nulinė, o dydis, kurį deklaravome naudodami „ReDim“, tampa nauju masyvo dydžiu.

VBA Redim pareiškimo naudojimo pavyzdžiai

Šį „VBA ReDim Excel“ šabloną galite atsisiųsti čia - „VBA ReDim Excel“ šablonas

1 pavyzdys

Pažvelkite į „ReDim“ teiginio praktiško naudojimo pavyzdį. Norėdami pritaikyti „ReDim“, atlikite toliau nurodytus veiksmus.

1 veiksmas: pirmiausia sukurkite makrokomandos pavadinimą.

2 veiksmas: masyvo pavadinimą paskelbkite eilute.

Kodas:

 Sub ReDim_Example1 () Dim MyArray () Kaip eilutės pabaiga Sub 

3 žingsnis: Dabar naudokite žodį „Redim“ ir priskirkite masyvo dydį.

Kodas:

 Sub ReDim_Example1 () Dim MyArray () Kaip eilutė ReDim MyArray (1–3) Pabaiga Sub 

4 žingsnis: Taigi dabar masyvo pavadinime „MyArray“ čia gali būti iki 3 reikšmių. Priskirkite vertę šiems 3 masyvams, kaip žemiau.

Kodas:

 Sub ReDim_Example1 () Dim MyArray () kaip eilutė ReDim MyArray (1–3) MyArray (1) = "Sveiki atvykę" MyArray (2) = "į" MyArray (3) = "VBA" pabaigos antrinis 

Taigi pirmasis masyvas yra lygus žodžiui „Welcome“, antrasis masyvas yra lygus žodžiui „to“, o trečiasis masyvas yra lygus žodžiui „VBA“.

5 žingsnis: Dabar saugokite šias masyvo reikšmes ląstelėse.

Kodas:

 Sub ReDim_Example1 () Dim MyArray () Kaip eilutė ReDim MyArray (1–3) MyArray (1) = "Sveiki atvykę" MyArray (2) = "į" MyArray (3) = "VBA" diapazonas ("A1"). Reikšmė = „MyArray“ (1) diapazonas („B1“). Reikšmė = „MyArray“ (2) diapazonas („C1“). Reikšmė = MyArray (3) pabaigos dalis 

6 žingsnis: Jei paleisite šį kodą, šias reikšmes turėtume turėti atitinkamai A1, B1 ir C1 langeliuose.

2 pavyzdys - pakeiskite masyvo dydį, prisimindami senąsias vertes.

Kai masyvo pavadinimui priskirtos reikšmės, mes taip pat galime pakeisti bet kurio procedūros momento dydį, naudodami žodį „ReDim Preserve“.

Tarkime, kad jūs jau deklaravote masyvo pavadinimą ir priskyrėte vertes tiems masyvo pavadinimams, kaip žemiau.

Dabar norėtumėte padidinti masyvo ilgį 2, ty 5. Tokiu atveju mes galime naudoti žodį VBA „ReDim Preserve“, kad pakeistume masyvo ilgį, kad prisimintume ir senąsias reikšmes.

Kodas:

 „ReDim_Example2“ () „Dim MyArray“ () kaip eilutė „1 simbolio“ diapazonas („A1“). Reikšmė = MyArray (1) Diapazonas („B1“). Reikšmė = MyArray (2) Diapazonas („C1“). Reikšmė = MyArray (3) Diapazonas („D1“). Vertė = MyArray (4) Pabaiga 

Dabar masyvui galime priskirti dar dvi reikšmes.

Kodas:

 „ReDim_Example2“ () „Dim MyArray“ () kaip eilutė „1 simbolio“ diapazonas („A1“). Reikšmė = MyArray (1) Diapazonas („B1“). Reikšmė = MyArray (2) Diapazonas („C1“). Reikšmė = MyArray (3) Diapazonas („D1“). Vertė = MyArray (4) Pabaiga 

Dabar išsaugokite šias reikšmes langeliuose.

Kodas:

 „ReDim_Example2“ () „Dim MyArray“ () kaip eilutė „1 simbolio“ diapazonas („A1“). Reikšmė = MyArray (1) Diapazonas („B1“). Reikšmė = MyArray (2) Diapazonas („C1“). Reikšmė = MyArray (3) Diapazonas („D1“). Vertė = MyArray (4) Pabaiga 

Dabar paleiskite makrokomandą ir pažiūrėkite, kas atsitiks

Taigi mes gavome naują žodį D1 langelyje.

Priežastis, kodėl turime naudoti žodį „išsaugoti“, nes masyvas procedūroje turėtų prisiminti senąsias masyvo reikšmes.

Tuo metu, kai ignoruosite žodį „išsaugoti“, jis neprisimins senų vertybių.

Ką čia reikia atsiminti

  • „ReDim“ gali laikyti tik paskutinę masyvo vertę, o ne daug reikšmių. Pavyzdžiui, mes negalime naudoti šio kodo „ReDim Preserve MyArray (4–5)“, tai išmes klaidą.
  • Mes negalime „ReDim“ statinių masyvų. Tuo momentu, kai skliaustuose priskiriate masyvo dydį, jis tampa statiniu masyvu.
  • Naudodami „ReDim“ negalime pakeisti duomenų tipo. Masyvas gali talpinti bet kokį duomenų tipą, kurį priskyrėme deklaruodami masyvą.

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