VBA ReDim | Dünaamiliste massiivide käsitsemine VBA ReDim Preserve abil
Exceli VBA ReDimi avaldus
VBA Redim lause on sarnane hämarale avaldusele, kuid erinevus seisneb selles, et seda kasutatakse suurema salvestusruumi salvestamiseks või eraldamiseks või muutuja või massiivi salvestusruumi vähendamiseks. Nüüd on avaldisega kaks olulist aspekti Säilita, kui selle lause juures kasutatakse säilivust, siis loob see uue erineva suurusega massiivi ja kui säilitusega seda lauset ei kasutata, muudab see lihtsalt praeguse muutuja massiivi suurust.
Massiivid on VBA kodeerimise oluline osa. Massiivide abil saame samasse meie määratletud muutujasse salvestada rohkem kui ühe väärtuse. Nagu ka see, kuidas me deklareerime muutuja sõna Dim kasutades, peame ka massiivi nime deklareerima, kasutades ka Dim-d.
Massiivi nime deklareerimiseks peame kõigepealt tuvastama massiivi tüübi, mille me määratleme. Massiivides on meil 5 tüüpi.
- Staatiline massiiv
- Dünaamiline massiiv
- Ühemõõtmeline massiiv
- Kahemõõtmeline massiiv
- Mitmemõõtmeline massiiv
Staatilises massiivis excelis otsustame muutuja deklareerimise korral massiivi alumise ja ülemise väärtuse aegsasti ette. Näiteks vaadake allpool toodud näidet.
Kood:
Sub ReDim_Example1 () Dim MyArray (1 kuni 5) String End Sub
Siin on MyArray massiivi nimi, mille väärtus võib olla vahemikus 1 kuni 5. MyArray mahutab selles 5 erinevat tulemust nagu allpool.
Kood:
Sub ReDim_Example1 () Dim MyArray (1 kuni 5) stringina MyArray (1) = "Tere" MyArray (2) = "Hea" MyArray (3) = "Hommik" MyArray (4) = "Kas teil on" MyArray (5) " = "Tore päev" Lõppsub
Dünaamiline massiiv koos ReDimi avaldusega
Kuid dünaamilise massiivi puhul see nii ei ole, me ei otsusta alumist ja ülemist väärtust aegsasti ette, vaid määrame lihtsalt massiivi nime ja määrame andmetüübi.
Sub ReDim_Example1 () Dim MyArray () String End Sub
Massiivinime muutmiseks dünaamiliseks peame selle deklareerima kõigepealt sõnaga „Hämar”, kuid ärge otsustage massiivi suurust aegsasti. Nimetame lihtsalt sulgudes tühjade väärtustega massiivi (). Kui massiiv ei sisalda suurust, käsitletakse seda dünaamilise massiivina.
Dim MyArray () stringina
Sel hetkel, kui mainite sulgudes oleva massiivi suurust, muutub see staatiliseks massiiviks. Dim MyArray (1 kuni 5) stringina
Dünaamilises massiivis muudame massiivi suurust alati, kasutades koodi järgmisel real sõna “ReDim”.
ReDim MyArray (1 kuni 6) stringina
Kõik väärtused, mis on eelmiste sammude korral massiivi nimele salvestatud, st kasutades käsku „Dim“, on null ja suurusest, mille deklareerisime „ReDim“ abil, saab massiivi uueks suuruseks.
Näited VBA redimendi kasutamise kohta
Selle VBA ReDim Exceli malli saate alla laadida siit - VBA ReDim Exceli mallNäide 1
Heitke pilk avalduse “ReDim” praktilisele kasutamisele. ReDimi rakendamiseks toimige järgmiselt.
1. samm: kõigepealt looge makro nimi.
2. samm: kuulutage massiivi nimi stringina.
Kood:
Sub ReDim_Example1 () Dim MyArray () String End Sub
3. samm: kasutage nüüd sõna „Redim” ja määrake massiivi suurus.
Kood:
Sub ReDim_Example1 () Dim MyArray () Stringina ReDim MyArray (1 kuni 3) End Sub
Samm 4: Nii et massiivi nimi "MyArray" mahutab siin kuni 3 väärtust. Määrake väärtus nendele 3 massiivile nagu allpool.
Kood:
Sub ReDim_Example1 () Dim MyArray () stringina ReDim MyArray (1 kuni 3) MyArray (1) = "Tere tulemast" MyArray (2) = "" MyArray (3) = "VBA" lõpp-alam
Esimene massiiv on võrdne sõnaga “Welcome”, teine massiiv on võrdne sõnaga “to” ja kolmas massiiv on võrdne sõnaga “VBA”.
5. samm: nüüd salvestage need massiivi väärtused lahtritesse.
Kood:
Sub ReDim_Example1 () Dim MyArray () stringina ReDim MyArray (1 kuni 3) MyArray (1) = "Welcome" MyArray (2) = "to" MyArray (3) = "VBA" Range ("A1"). Väärtus = MyArray (1) vahemik ("B1"). Väärtus = MyArray (2) Range ("C1"). Väärtus = MyArray (3) End Sub
6. samm: kui käivitate selle koodi, peaksid need väärtused olema vastavalt lahtrites A1, B1 ja C1.
Näide # 2 - muutke massiivi suurust, kui mäletate vanu väärtusi.
Kui massiivi nimele on määratud väärtused, saame ka protseduuri mis tahes ajahetkel suurust muuta, kasutades sõna “ReDim Preserve”.
Oletame, et olete massiivi nime juba deklareerinud ja määranud neile massiivi nimele väärtused nagu allpool.
Nüüd soovite massiivi pikkust suurendada 2 ehk 5 võrra. Sellisel juhul võime massiivi pikkuse suuruse muutmiseks kasutada sõna VBA “ReDim Preserve”, et ka vanad väärtused meelde jätta.
Kood:
Sub ReDim_Example2 () Dim MyArray () stringina ReDim MyArray (3) MyArray (1) = "Welcome" MyArray (2) = "to" MyArray (3) = "VBA" ReDim Preserve MyArray (4) MyArray (4) = "Märk 1" Vahemik ("A1"). Väärtus = MyArray (1) Range ("B1"). Väärtus = MyArray (2) Range ("C1"). Väärtus = MyArray (3) Range ("D1"). Väärtus = MyArray (4) End Sub
Nüüd saame massiivile määrata veel kaks väärtust.
Kood:
Sub ReDim_Example2 () Dim MyArray () stringina ReDim MyArray (3) MyArray (1) = "Welcome" MyArray (2) = "to" MyArray (3) = "VBA" ReDim Preserve MyArray (4) MyArray (4) = "Märk 1" Vahemik ("A1"). Väärtus = MyArray (1) Range ("B1"). Väärtus = MyArray (2) Range ("C1"). Väärtus = MyArray (3) Range ("D1"). Väärtus = MyArray (4) End Sub
Nüüd salvestage need väärtused lahtritesse.
Kood:
Sub ReDim_Example2 () Dim MyArray () stringina ReDim MyArray (3) MyArray (1) = "Welcome" MyArray (2) = "to" MyArray (3) = "VBA" ReDim Preserve MyArray (4) MyArray (4) = "Märk 1" Vahemik ("A1"). Väärtus = MyArray (1) Range ("B1"). Väärtus = MyArray (2) Range ("C1"). Väärtus = MyArray (3) Range ("D1"). Väärtus = MyArray (4) End Sub
Nüüd käivitage makro ja vaadake, mis juhtub
Nii saime uue sõna lahtrisse D1.
Põhjus, miks peame kasutama sõna „säilitada“, kuna massiiv peaks protseduuris meeles pidama vanu massiivi väärtusi.
Praegu, kui te ignoreerite sõna “säilita”, ei mäleta see vanu väärtusi.
Siinkohal meenutavad asjad
- ReDim mahutab ainult massiivi viimase väärtuse, mitte palju väärtusi. Näiteks ei saa me kasutada seda koodi “ReDim Preserve MyArray (4–5)”, see viskab vea.
- Me ei saa staatilisi massiive ReDimi muuta. Hetkel, kui määrate sulgudes oleva massiivi suuruse, muutub see staatiliseks massiiviks.
- ReDimi kasutades ei saa me andmetüüpi muuta. Massiiv võib mahutada mis tahes andmetüübi, mille oleme massiivi deklareerimisel omistanud.