Massiivid Visual Basicu rakenduses

Visual Basic for Application massiivid on struktuurid, mis tavaliselt salvestavad sama tüüpi seotud muutujate komplekte. Massiivikirjetele pääseb juurde nende numbrilise indeksi järgi.

Näiteks on 20-liikmeline meeskond, kelle nimed tuleb salvestada, et neid hiljem VBA koodis kasutada. Iga nime hoidmiseks võiks lihtsalt deklareerida 20 muutujat, näiteks:

Dim Team_Member1 stringina Dim Team_member2 stringina ... Dim Team_Member20 stringina

Kuid võite kasutada palju lihtsamat ja organiseeritumat viisi – salvestage meeskonnaliikmete nimede loend 20 muutuja massiivi, näiteks nöör:

Dim Team_Members (1 kuni 20) stringina

Ülaltoodud real oleme deklareerinud massiivi. Nüüd kirjutame igale selle elemendile väärtuse, näiteks järgmiselt:

Team_Members(1) = "John Smith"

Andmete massiivi salvestamise täiendav eelis, võrreldes eraldi muutujate kasutamisega, ilmneb siis, kui on vaja teha sama toiming massiivi iga elemendiga. Kui meeskonnaliikmete nimed salvestataks 20 erinevasse muutujasse, kuluks iga kord 20 koodirida kirjutamiseks, et teha igaühega sama toiming. Kui aga nimed on salvestatud massiivi, saate lihtsa tsükli abil teha soovitud toimingu igaühega neist.

Selle toimimist näidatakse allpool koodinäite abil, mis prindib veeru lahtritesse järjestikku iga meeskonnaliikme nimed. A aktiivne Exceli tööleht.

Kui i = 1 kuni 20 lahtrit (i, 1). Väärtus = Team_Members(i) Järgmine i

Ilmselgelt on 20 nime talletava massiiviga töötamine palju vähem tülikas ja täpsem kui 20 eraldi muutuja kasutamine. Aga kui neid nimesid pole mitte 20, vaid 1000? Ja kui lisaks nõutakse perekonnanimede ja isanimede eraldi hoidmist?! On selge, et sellise andmemahu käsitlemine VBA koodis ilma massiivi abita muutub peagi täiesti võimatuks.

Mitmemõõtmelised massiivid programmis Excel Visual Basic

Eespool käsitletud Visual Basicu massiive peetakse ühemõõtmelisteks. See tähendab, et nad salvestavad lihtsa nimede loendi. Massiividel võib aga olla mitu mõõdet. Näiteks saab kahemõõtmelist massiivi võrrelda väärtuste ruudustikuga.

Oletame, et soovite salvestada 5 erineva meeskonna jaanuarikuu igapäevased müüginumbrid. Selleks on vaja kahemõõtmelist massiivi, mis koosneb viiest mõõdikukomplektist 5 päeva jooksul. Deklareerime massiivi järgmiselt:

Dim jaan_Müügi_arvud (1 kuni 31, 1 kuni 5) valuutana

Et pääseda juurde massiivi elementidele Jaan_Müük_Arvud, peate kasutama kahte indeksit, mis näitavad kuu päeva ja käsu numbrit. Näiteks elemendi aadress, mis sisaldab müüginumbreid 2-oh meeskonnad eest 15 jaanuar oleks kirjutatud nii:

Jaanuari_müügi_arvud(15, 2)

Samamoodi saate deklareerida 3 või enama dimensiooniga massiivi – lihtsalt lisage massiivi deklaratsioonile täiendavad dimensioonid ja kasutage selle massiivi elementidele viitamiseks täiendavaid indekseid.

Massiivide deklareerimine programmis Excel Visual Basic

Varem selles artiklis vaatlesime juba mitmeid näiteid massiivide deklareerimisest VBA-s, kuid see teema väärib lähemat uurimist. Nagu näidatud, saab ühemõõtmelise massiivi deklareerida järgmiselt:

Dim Team_Members (1 kuni 20) stringina

Selline deklaratsioon ütleb VBA kompilaatorile, et massiiv Team_Members koosneb 20 muutujast, millele pääseb juurde indeksitega 1 kuni 20. Siiski võiksime mõelda massiivi muutujate nummerdamisele 0 kuni 19, sel juhul tuleks massiiv deklareerida järgmiselt:

Dim Team_Members (0 kuni 19) stringina

Tegelikult algab massiivi elementide nummerdamine vaikimisi 0-st ja massiivi deklaratsioonis ei pruugita algset indeksit üldse määrata, näiteks järgmiselt:

Dim Team_Members(19) Stringina

VBA kompilaator käsitleb sellist kirjet 20 elemendist koosneva massiivi deklareerimisena indeksiga 0 kuni 19.

Samad reeglid kehtivad ka mitmemõõtmeliste Visual Basicu massiivide deklareerimisel. Nagu ühes näites juba näidatud, eraldatakse kahemõõtmelise massiivi deklareerimisel selle mõõtmete indeksid komaga:

Dim jaan_Müügi_arvud (1 kuni 31, 1 kuni 5) valuutana

Kui te aga ei määra massiivi mõlema mõõtme algusindeksit ja deklareerite seda järgmiselt:

Dim Jan_Müügi_arvud(31, 5) Valuutana

siis käsitletakse seda kirjet kahemõõtmelise massiivina, mille esimene dimensioon sisaldab 32 elementi indeksiga 0 kuni 31 ja massiivi teine ​​mõõde sisaldab 6 elementi indeksiga 0 kuni 5.

Dünaamilised massiivid

Kõigil ülaltoodud näidete massiividel on kindel arv mõõtmeid. Paljudel juhtudel me aga ei tea ette, mis suurusega meie massiiv peaks olema. Saame olukorrast välja tulla, deklareerides tohutu massiivi, mille suurus on kindlasti suurem kui meie ülesande jaoks vajalik. Kuid selline lahendus nõuab palju lisamälu ja võib programmi aeglustada. On parem lahendus. Saame kasutada dünaamilist massiivi – see on massiiv, mille suurust saab makro täitmise ajal määrata ja muuta suvaliselt mitu korda.

Dünaamiline massiiv deklareeritakse tühjade sulgudega, näiteks järgmiselt:

Dim Team_Members() Stringina

Järgmisena peate koodi täitmise ajal avaldise abil deklareerima massiivi mõõtme ReDim:

ReDim Team_Members (1 kuni 20)

Ja kui koodi täitmise ajal peate massiivi suurust uuesti muutma, saate uuesti kasutada ReDimi avaldist:

Kui meeskonna_suurus > 20, siis RedDim Team_Members (1 kuni meeskonna_suurus) Lõpeta, kui

Pidage meeles, et dünaamilise massiivi suuruse muutmine sellisel viisil toob kaasa kõigi massiivi salvestatud väärtuste kadumise. Juba massiivi andmete salvestamiseks tuleb kasutada märksõna Säilitagenagu allpool näidatud:

Kui meeskonna_suurus > 20, siis RedDim säilitada Team_Members (1 kuni meeskonna_suurus) Lõpeta, kui

Kahjuks märksõna Säilitage saab kasutada ainult massiivi mõõtme ülemise piiri muutmiseks. Massiivi alumist piiri ei saa sel viisil muuta. Samuti, kui massiivil on mitu dimensiooni, kasutage märksõna Säilitage, saab muuta ainult massiivi viimast mõõdet.

Jäta vastus