Useimmat ohjelmointikielet tukevat taulukoita, mukaan lukien VBA. Array on joukko muuttujia, jotka jakavat nimen. Voit viitata tiettyyn taulukon muuttujaan käyttämällä taulukon nimeä ja indeksinumeroa suluissa. Voit esimerkiksi määrittää 12 merkkijonomuuttujan taulukon, joka sisältää vuoden kuukausien nimet. Jos annat taulukon nimeksi MonthNames , voit viitata taulukon ensimmäiseen elementtiin nimellä MonthNames (1), toiseen elementtiin MonthNames (2) ja niin edelleen.
Taulukoiden ilmoittaminen
Ennen kuin voit käyttää taulukkoa, sinun on ilmoitettava se. Ei poikkeuksia. Toisin kuin tavallisten muuttujien kanssa, VBA noudattaa tätä sääntöä erittäin tiukasti. Ilmoitat taulukon Dim- tai Public-lauseella, aivan kuten ilmoitat tavallisen muuttujan. Sinun on kuitenkin myös määritettävä taulukon elementtien määrä. Voit tehdä tämän määrittämällä ensimmäisen indeksinumeron, avainsanan Vastaanottaja ja viimeisen indeksinumeron – kaikki sulkeissa. Seuraava esimerkki näyttää, kuinka 100 kokonaisluvun taulukko määritellään:
Himmeä MyArray (1 - 100) Kokonaislukuna
Kun määrität taulukon, voit määrittää vain ylemmän indeksin. Jos jätät pois alemman indeksin, VBA olettaa sen olevan 0. Siksi molemmat seuraavista lauseista ilmoittavat saman 101 elementin taulukon:
Himmeä MyArray (0 - 100) Kokonaislukuna
Dim MyArray (100) Kokonaislukuna
Jos haluat VBA:n olettavan, että 1 (ei 0) on taulukoidesi alempi indeksi, sisällytä seuraava lausunto moduulisi yläreunassa olevaan Ilmoitukset-osioon:
Vaihtoehtopohja 1
Tämä lauseke pakottaa VBA:n käyttämään 1:tä ensimmäisenä indeksinumerona taulukoille, jotka ilmoittavat vain ylemmän indeksin. Jos tämä lauseke on olemassa, seuraavat lauseet ovat identtisiä, ja molemmat ilmoittavat 100 elementin taulukon:
Himmeä MyArray (1 - 100) Kokonaislukuna
Dim MyArray (100) Kokonaislukuna
Moniulotteiset taulukot
Edellisissä esimerkeissä luodut taulukot ovat kaikki yksiulotteisia. Ajattele yksiulotteisia taulukoita yhtenä arvorivinä. VBA:ssa luomillasi taulukoilla voi olla jopa 60 ulottuvuutta – vaikka harvoin tarvitset enemmän kuin kaksi tai kolme ulottuvuutta taulukossa. Seuraava esimerkki ilmoittaa 81 kokonaisluvun taulukon, jossa on kaksi ulottuvuutta:
Himmeä MyArray (1 - 9, 1 - 9) Kokonaislukuna
Voit ajatella tämän matriisin sisältävän 9 x 9 matriisin – täydellinen kaikkien numeroiden tallentamiseen Sudoku-pulmaan.
Jos haluat viitata tiettyyn elementtiin tässä taulukossa, sinun on määritettävä kaksi indeksinumeroa (samanlainen kuin sen "rivi" ja "sarake" matriisissa). Seuraava esimerkki näyttää, kuinka voit määrittää arvon tämän taulukon elementille:
OmaArray (3, 4) = 125
Tämä lauseke antaa arvon yhdelle taulukon elementille. Jos ajattelet taulukkoa 9 x 9 -matriisina, tämä määrittää 125 matriisin kolmannella rivillä ja neljännessä sarakkeessa sijaitsevalle elementille.
Näin voit määrittää kolmiulotteisen taulukon, jossa on 1 000 elementtiä:
Himmeä My3DArray (1 - 10, 1 - 10, 1 - 10) kokonaislukuna
Voit ajatella kolmiulotteista taulukkoa kuutiona. Yli kolmen ulottuvuuden taulukon visualisointi on vaikeampaa.
Dynaamiset taulukot
Voit myös luoda dynaamisia taulukoita. Dynaamisessa taulukossa ei ole ennalta asetettua määrää elementtejä. Ilmoita dynaaminen taulukko tyhjillä suluilla:
Himmeä MyArray () Kokonaislukuna
Ennen kuin voit käyttää tätä taulukkoa, sinun on kerrottava VBA:lle ReDim-käskyn avulla, kuinka monta elementtiä taulukossa on. Yleensä taulukon elementtien määrä määritetään koodin ollessa käynnissä. Voit käyttää ReDim-käskyä kuinka monta kertaa tahansa, muuttaen taulukon kokoa tarpeen mukaan. Seuraava esimerkki osoittaa, kuinka dynaamisen taulukon elementtien määrää muutetaan. Se olettaa, että NumElements-muuttuja sisältää arvon, jonka koodisi on laskenut.
Redim MyArray (1 - NumElements)
Kun mittaat taulukon uudelleen ReDimin avulla, pyyhit pois kaikki taulukon elementteihin tällä hetkellä tallennetut arvot. Voit välttää vanhojen arvojen tuhoamisen käyttämällä Säilytä-avainsanaa. Seuraava esimerkki näyttää, kuinka voit säilyttää taulukon arvot, kun mittaat taulukon uudelleen:
Redim Preserve MyArray (1 To NumElements)
Jos MyArrayssa on tällä hetkellä kymmenen elementtiä ja suoritat edellisen käskyn NumElements-arvolla 12, ensimmäiset kymmenen elementtiä pysyvät ennallaan ja taulukossa on tilaa kahdelle lisäelementille (muuttujan NumElements sisältämään määrään asti). Jos NumElements on kuitenkin 7, ensimmäiset seitsemän elementtiä säilyvät, mutta loput kolme elementtiä häviävät.