Dauguma programavimo kalbų palaiko masyvus, įskaitant VBA. Masyvas yra kintamųjų, kurie dalijasi Grupė. Nurodykite konkretų masyvo kintamąjį naudodami masyvo pavadinimą ir indekso numerį skliausteliuose. Pavyzdžiui, galite apibrėžti 12 eilučių kintamųjų masyvą, kuriame būtų laikomi metų mėnesių pavadinimai. Jei masyvą pavadinsite Mėnesių vardai , pirmąjį masyvo elementą galite nurodyti kaip Mėnesių vardai (1), antrąjį – Mėnesių vardai (2) ir pan.
Masyvų deklaravimas
Prieš galite naudoti masyvą, jums reikia ją paskelbti. Jokių išimčių. Skirtingai nuo įprastų kintamųjų, VBA labai griežtai laikosi šios taisyklės. Masyvą deklaruojate naudodami Dim arba Public pareiškimą, kaip ir įprastą kintamąjį. Tačiau taip pat turite nurodyti elementų skaičių masyve. Tai galite padaryti nurodydami pirmąjį indekso numerį, raktinį žodį Kam ir paskutinį indekso numerį – visa tai skliausteliuose. Šiame pavyzdyje parodyta, kaip deklaruoti 100 sveikųjų skaičių masyvą:
Pritemdyti MyArray (nuo 1 iki 100) kaip sveikasis skaičius
Kai deklaruojate masyvą, galite pasirinkti nurodyti tik viršutinį indeksą. Jei praleidžiate žemesnį indeksą, VBA daro prielaidą, kad jis yra 0. Todėl abu šie teiginiai deklaruoja tą patį 101 elemento masyvą:
Pritemdyti MyArray (nuo 0 iki 100) kaip sveikasis skaičius
Dim MyArray (100) kaip sveikasis skaičius
Jei norite, kad VBA manytų, kad 1 (o ne 0) yra žemesnis jūsų masyvų indeksas, įtraukite šį teiginį į skyrių Deklaracijos savo modulio viršuje:
1 varianto bazė
Šis teiginys verčia VBA naudoti 1 kaip pirmąjį indekso numerį masyvams, kurie deklaruoja tik viršutinį indeksą. Jei šis teiginys yra, šie teiginiai yra identiški ir abu deklaruoja 100 elementų masyvą:
Pritemdyti MyArray (nuo 1 iki 100) kaip sveikasis skaičius
Dim MyArray (100) kaip sveikasis skaičius
Daugiamačiai masyvai
Ankstesniuose pavyzdžiuose sukurti masyvai yra vienmačiai. Pagalvokite apie vienmačius masyvus kaip apie vieną reikšmių eilutę. Masyvai, kuriuos sukuriate VBA, gali turėti net 60 matmenų, nors retai kada reikia daugiau nei dviejų ar trijų masyvo matmenų. Šis pavyzdys deklaruoja 81 sveikojo skaičiaus masyvą su dviem matmenimis:
Pritemdyti MyArray (nuo 1 iki 9, nuo 1 iki 9) kaip sveikasis skaičius
Galite manyti, kad šis masyvas užima 9 x 9 matricą – puikiai tinka saugoti visus skaičius Sudoku galvosūkyje.
Norėdami nurodyti konkretų elementą šiame masyve, turite nurodyti du indekso numerius (panašiai į jo „eilutę“ ir „stulpelį“ matricoje). Šiame pavyzdyje parodyta, kaip galite priskirti reikšmę šio masyvo elementui:
MyArray (3, 4) = 125
Šis teiginys priskiria reikšmę vienam masyvo elementui. Jei galvojate apie masyvą kaip 9 x 9 matricą, tai priskiria 125 elementui, esančiam trečioje matricos eilutėje ir ketvirtame stulpelyje.
Štai kaip deklaruoti trimatį masyvą su 1000 elementų:
Pritemdyti My3DArray (nuo 1 iki 10, nuo 1 iki 10, nuo 1 iki 10) kaip sveikasis skaičius
Galite įsivaizduoti trimatį masyvą kaip kubą. Vizualizuoti daugiau nei trijų matmenų masyvą yra sunkiau.
Dinaminiai masyvai
Taip pat galite sukurti dinaminius masyvus. Dinaminis masyvas neturi iš anksto nustatyto elementų skaičiaus. Paskelbkite dinaminį masyvą su tuščiu skliaustų rinkiniu:
Dim MyArray () Kaip sveikasis skaičius
Prieš naudodami šį masyvą, turite naudoti ReDim teiginį, kad nurodytumėte VBA, kiek elementų yra masyve. Paprastai elementų skaičius masyve nustatomas veikiant jūsų kodui. ReDim teiginį galite naudoti bet kokį skaičių kartų, keisdami masyvo dydį taip dažnai, kaip reikia. Toliau pateiktame pavyzdyje parodyta, kaip pakeisti elementų skaičių dinaminiame masyve. Daroma prielaida, kad kintamajame NumElements yra reikšmė, kurią apskaičiavo jūsų kodas.
„ReDim MyArray“ (nuo 1 iki „NumElements“)
Kai keičiate masyvo dydį naudodami ReDim, ištrinate visas šiuo metu masyvo elementuose saugomas reikšmes. Galite išvengti senų vertybių sunaikinimo naudodami raktinį žodį Išsaugoti. Šiame pavyzdyje parodyta, kaip galite išsaugoti masyvo reikšmes, kai keičiate masyvo dydį:
„ReDim Preserve MyArray“ (nuo 1 iki „NumElements“)
Jei MyArray šiuo metu yra dešimt elementų ir jūs vykdote ankstesnį sakinį su NumElements lygiu 12, pirmieji dešimt elementų lieka nepažeisti, o masyve yra vietos dviem papildomiems elementams (iki skaičiaus, esančio kintamajame NumElements). Tačiau jei NumElements lygus 7, pirmieji septyni elementai išsaugomi, bet likę trys elementai išnyksta.