Innholdsfortegnelse:
Video: IT2 Programmering intro array 2024
De fleste programmeringsspråk støtter arrays, inkludert VBA. Et array er en gruppe variabler som deler et navn. Du refererer til en bestemt variabel i arrayet ved å bruke arraynavnet og et indeksnummer i parentes. For eksempel kan du definere en rekke med 12 strengvariabler for å holde navnene på årets måneder. Hvis du heter arrayet MonthNames , kan du referere til det første elementet i arrayet som MonthNames (1), det andre elementet som MonthNames (2), og så videre.
Deklarasjoner
Før du kan bruke en matrise, må du må erklære det. Ingen unntak. I motsetning til normale variabler er VBA veldig streng om denne regelen. Du erklærer en matrise med en Dim eller Offentlig setning, akkurat som du erklærer en vanlig variabel. Du må imidlertid også spesifisere antall elementer i arrayet. Du gjør dette ved å angi det første indeksnummeret, søkeordet til, og det siste indeksnummeret - alle innenfor parenteser. Følgende eksempel viser hvordan du skal erklære en rekke med 100 heltall:
Dim MyArray (1 til 100) Som helhet
Når du erklærer en matrise, kan du velge å spesifisere kun den øvre indeksen. Hvis du utelater den nedre indeksen, antar VBA at den er 0. Derfor erklærer begge de følgende setningene den samme 101-elementarmen:
Dim MyArray (0 til 100) Som Integer Dim MyArray (100) Som Integer
Hvis du vil at VBA skal anta at 1 (i stedet for 0) er den nedre indeksen for arrays, må du ta med følgende erklæring i avklaringsdelen øverst på modulen din:
Alternativ Base 1
Denne setningen tvinger VBA til å bruke 1 som det første indeksnummeret for arrays som kun erklærer den øvre indeksen. Hvis denne setningen er til stede, er følgende setninger identiske, begge deklarerer en 100-elementarray:
Dim MyArray (1 til 100) Som Integer Dim MyArray (100) Som Integer
Flerdimensjonale Arrays
Arrays opprettet i de forrige eksemplene er alle endimensjonale arrays. Tenk på endimensjonale arrays som en enkelt linje av verdier. Arrays du lager i VBA kan ha så mange som 60 dimensjoner - selv om du sjelden trenger mer enn to eller tre dimensjoner i en matrise. Følgende eksempel erklærer et 81-heltall med to dimensjoner:
Dim MyArray (1 til 9, 1 til 9) som helhet
Du kan tenke på denne matrisen som opptar en 9 x 9 matrise - perfekt for lagring av alt tall i et Sudoku-puslespill.
For å referere til et bestemt element i denne gruppen, må du angi to indeksnumre (ligner på "raden" og dens "kolonne" i matrisen).Følgende eksempel viser hvordan du kan tilordne en verdi til et element i denne gruppen:
MyArray (3, 4) = 125
Denne setningen tilordner en verdi til et enkelt element i matrisen. Hvis du tenker på matrisen i form av en 9 x 9-matrise, tilordnes dette 125 til elementet som ligger i tredje rad og fjerde kolonne i matrisen.
Slik erklærer du en tredimensjonal matrise med 1 000 elementer:
Dim My3DArray (1 til 10, 1 til 10, 1 til 10) som helhet
Du kan tenke på en tredimensjonal array som en terning. Det er vanskeligere å visualisere en rekkevidde på mer enn tre dimensjoner.
Dynamiske arrayer
Du kan også lage dynamiske arrayer. Et dynamisk array har ikke et forhåndsinnstilt antall elementer. Deklarer et dynamisk array med et tomt par parenteser:
Dim MyArray () Som helhet
Før du kan bruke dette arrayet, må du bruke ReDim-setningen for å fortelle VBA hvor mange elementer oppstillingen har. Vanligvis blir antall elementer i arrayet bestemt mens koden din kjører. Du kan bruke ReDim-setningen et hvilket som helst antall ganger, endre arrayets størrelse så ofte som nødvendig. Følgende eksempel viser hvordan du kan endre antall elementer i et dynamisk array. Det antas at NumElements-variabelen inneholder en verdi som koden din har beregnet.
ReDim MyArray (1 til NumElements)
Når du redimensjonerer en matrise ved hjelp av ReDim, tørker du ut noen verdier som er lagret i arrayelementene. Du kan unngå å ødelegge de gamle verdiene ved å bruke Bevare søkeord. Følgende eksempel viser hvordan du kan bevare en arrays verdier når du redimensjonerer arrayen:
ReDim Preserve MyArray (1 til NumElements)
Hvis MyArray for øyeblikket har ti elementer, og du utfører den foregående setningen med NumElements tilsvarende 12, De første ti elementene forblir intakte, og arrayet har plass til ytterligere to elementer (opp til tallet i variabelen NumElements). Hvis NumElements er lik 7, beholdes de første syv elementene, men de resterende tre elementene møter deres død.