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ą skirtingo dydžio masyvą, o jei konservas nenaudojamas su šiuo sakiniu, jis tiesiog pakeičia dabartinio kintamojo masyvo dydį.

Masyvai yra svarbi VBA kodavimo dalis. Naudodami masyvus, mes galime išsaugoti daugiau nei vieną reikšmę tame pačiame kintamajame, kurį mes apibrėžėme. Kaip ir tai, kaip deklaruojame kintamąjį naudodami žodį „Dim“, turime deklaruoti masyvo pavadinimą taip pat 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

Tačiau „Dynamic masyve“ taip nėra. Mes iš anksto nenuspręsime dėl apatinės ir viršutinės vertės; mes tiesiog apibrėžiame masyvo pavadinimą ir priskiriame duomenų tipą.

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

Norėdami, kad masyvo pavadinimas būtų dinamiškas, pirmiausia turime jį deklaruoti ž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ė

Tą akimirką, 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 kuri reikšmė, išsaugota masyvo pavadinime ankstesniuose veiksmuose, ty naudojant „Dim“ sakinį, yra lygi nuliui, o dydis, kurį deklaravome naudodami „ReDim“, tampa nauju masyvo dydžiu.

VBA Redim pareiškimo naudojimo pavyzdžiai

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 žingsnis: 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 sub

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 antrinė dalis

6 žingsnis: Jei paleidžiate šį 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 vardui bus priskirtos reikšmės, mes taip pat galime pakeisti bet kurio procedūros momento dydį, naudodami žodį „ReDim Preserve“.

Assume you have already declared an array name and assigned values to those array name like the below one.

Now you would like to increase the array length by 2, i.e., 5. In this case, we can use the word VBA “ReDim Preserve” to resize the array length to remember the old values as well.

Code:

Sub ReDim_Example2() Dim MyArray() As String ReDim MyArray(3) MyArray(1) = "Welcome" MyArray(2) = "to" MyArray(3) = "VBA" ReDim Preserve MyArray(4) MyArray(4) = "Character 1" Range("A1").Value = MyArray(1) Range("B1").Value = MyArray(2) Range("C1").Value = MyArray(3) Range("D1").Value = MyArray(4) End Sub

Now we can assign two more values to the array.

Code:

Sub ReDim_Example2() Dim MyArray() As String ReDim MyArray(3) MyArray(1) = "Welcome" MyArray(2) = "to" MyArray(3) = "VBA" ReDim Preserve MyArray(4) MyArray(4) = "Character 1" Range("A1").Value = MyArray(1) Range("B1").Value = MyArray(2) Range("C1").Value = MyArray(3) Range("D1").Value = MyArray(4) End Sub

Now store these values in cells.

Code:

Sub ReDim_Example2() Dim MyArray() As String ReDim MyArray(3) MyArray(1) = "Welcome" MyArray(2) = "to" MyArray(3) = "VBA" ReDim Preserve MyArray(4) MyArray(4) = "Character 1" Range("A1").Value = MyArray(1) Range("B1").Value = MyArray(2) Range("C1").Value = MyArray(3) Range("D1").Value = MyArray(4) End Sub

Now run the macro and see what happens.

So we got the new word in the D1 cell.

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

Tą akimirką, 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, negalime naudoti šio kodo „ReDim Preserve MyArray (4–5)“. Tai sukels 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ą.

Įdomios straipsniai...