Excel VBA-arrays: Typer og hvordan man bruger dem med eksempler

โšก Smart opsummering

Excel VBA-arrays gemmer en gruppe af relaterede vรฆrdier af samme datatype under รฉt navn, som tilgรฅs via et indeks. Denne side forklarer statiske og dynamiske arrays, en-, to- og flerdimensionelle arrays, deklarationssyntaks og et bearbejdet eksempel pรฅ drikkevarepรฅfyldning.

  • ๐Ÿ“ฆ Array-koncept: En enkelt navngiven hukommelsesplacering, der indeholder mange vรฆrdier af samme datatype, adskilt af et indeks.
  • ๐ŸŽฏ fordele: Arrays grupperer relaterede data, reducerer antallet af variabler og gรธr hentning og sortering af data hurtigere.
  • ๐Ÿ“Œ Statisk array: Deklareret med en fast stรธrrelse, for eksempel Dim ArrayMonth(12) As String, nรฅr antallet af elementer er kendt.
  • ๐Ÿ”„ Dynamisk array: Deklareret tom med Dim ArrayMonth() og stรธrrelsesรฆndret senere ved hjรฆlp af ReDim, nรฅr elementantallet er ukendt.
  • ๐Ÿ“ dimensioner: Et array bruger et, to eller flere indekser til at modellere enkelte lister, tabeller eller data pรฅ flere niveauer.
  • ๐Ÿงช Udarbejdet eksempel: En kommandoknap indlรฆser fire drikkevarenavne fra et array i regnearksceller ved hjรฆlp af Sheet1.Cells.

Excel VBA-arrays

Hvad er VBA Array?

Et array er defineret som en hukommelsesplacering, der er i stand til at lagre mere end รฉn vรฆrdi. Vรฆrdierne skal alle vรฆre af samme datatype. Lad os sige, at du vil gemme en liste over dine yndlingsdrikke i en enkelt variabel, du kan bruge VBA-array til at gรธre det.

Ved at bruge et array kan du referere til de relaterede vรฆrdier med samme navn. Du kan bruge et indeks eller et abonnement til at skelne dem fra hinanden. De individuelle vรฆrdier omtales som elementerne i Excel VBA-arrayet. De er sammenhรฆngende fra indeks 0 til den hรธjeste indeksvรฆrdi.

Denne vejledning antager, at du bruger Microsoft Excel version 2013. Viden gรฆlder stadig andre versioner af Microsoft Excel ogsรฅ.

Hvad er fordelene ved arrays?

Fรธr man skriver array-kode, er det en god idรฉ at forstรฅ, hvorfor arrays er vรฆrd at bruge. Fรธlgende er nogle af fordelene ved en VBA-arrayfunktion.

  1. Gruppรฉr logisk relaterede data sammen โ€“ lad os sige, at du vil gemme en liste over elever. Du kan bruge en enkelt array-variabel, der har separate placeringer for elevkategorier, f.eks. bรธrnehave, primรฆr, sekundรฆr, gymnasieskole osv.
  2. Arrays gรธr det nemt at skrive vedligeholdelsesvenlig kode. For de samme logisk relaterede data giver det dig mulighed for at definere en enkelt variabel i stedet for at definere mere end รฉn variabel.
  3. Bedre ydeevne โ€“ nรฅr fรธrst et array er blevet defineret, er det hurtigere at hente, sortere og รฆndre data.

Typer af arrays i VBA

VBA understรธtter to typer arrays nemlig;

  • statisk โ€“ Disse typer arrays har et fast forudbestemt antal elementer, der kan lagres. Man kan ikke รฆndre stรธrrelsen pรฅ datatypen for et statisk array. Disse er nyttige, nรฅr du vil arbejde med kendte entiteter, sรฅsom antallet af dage i en uge, kรธn osv.For eksempel: Dim ArrayMonth(12) Som streng
  • Dynamisk โ€“ Disse typer arrays har ikke et fast forudbestemt antal elementer, der kan lagres. Disse er nyttige, nรฅr du arbejder med entiteter, som du ikke kan forudbestemme antallet.For eksempel: Dim ArrayMonth() Som variant

Nรฅr du ved, hvilken type der passer til dine data, er nรฆste trin deklarationssyntaksen for hver type.

Syntaks til at erklรฆre arrays

Statiske arrays

Syntaksen til at deklarere Statisk arrays er som fรธlger:

Dim arrayName (n) as datatype

HER,

Code Handling
Dim arrayName (n) datatype
  1. Den erklรฆrer en array-variabel kaldet arrayName med stรธrrelsen n og datatype. Stรธrrelse refererer til antallet af elementer, som arrayet kan gemme.

Dynamiske arrays

Syntaksen til at deklarere DYNAMISK arrays er som fรธlger:

Dim arrayName() as datatype
ReDim arrayName(4)

HER,

Code Handling
Dim arrayName () datatype
  1. Den erklรฆrer en array-variabel kaldet arrayName uden at angive antallet af elementer
ReDim arrayName(4)
  1. Det angiver array-stรธrrelsen, efter at arrayet er blevet defineret.

Matrix dimensioner

Et array kan vรฆre รฉn dimension, to dimensioner eller multidimensional.

  • En dimension: I denne dimension bruger arrayet kun รฉt indeks. For eksempel et antal mennesker i hver alder.
  • To dimensioner: I denne dimension bruger arrayet to indekser. Eksempelvis et antal elever i hver klasse. Det krรฆver antal klasser og elevnummer i hver klasse
  • Multidimension: I denne dimension bruger arrayet mere end to indekser. For eksempel temperaturer i dagtimerne. (30, 40, 20).

Sรฅdan bruger du Array i Excel VBA

Nรฅr vi har gennemgรฅet teorien, kan vi sรฆtte et array i gang i en rigtig projektmappe. Vi vil oprette en simpel applikation. Denne applikation udfylder et Excel-ark med data fra en arrayvariabel. I dette VBA-array-eksempel vil vi gรธre fรธlgende.

  • Opret en ny Microsoft Excel-projektmappe og gem den som Excel Macro-Enabled Workbook (*.xlsm)
  • Tilfรธj en kommandoknap til projektmappen
  • Indstil navn og billedtekstegenskaber for kommandoknappen
  • Programmering af den VBA, der udfylder Excel-arket

Lad denne รธvelse trin for trin,

Trin 1 โ€“ Opret en ny projektmappe

  1. ร…bne Microsoft Excel
  2. Gem den nye projektmappe som VBA Arrays.xlsm

Trin 2 โ€“ Tilfรธj en kommandoknap

Bemรฆrk: Dette afsnit forudsรฆtter, at du er fortrolig med processen med at skabe en grรฆnseflade i excel. Hvis du ikke er bekendt, sรฅ lรฆs selvstudiet VBA Excel Form Control & ActiveX Control. Det vil vise dig, hvordan du opretter grรฆnsefladen

  1. Tilfรธj en kommandoknap til arket

Brug Array i Excel VBA

  1. Indstil egenskaben name til cmdLoadBeverages
  2. Indstil billedtekstegenskaben til Indlรฆs drikkevarer

Din GUI skulle nu vรฆre som fรธlger

Brug Array i Excel VBA

Trin 3 โ€“ Gem filen

  1. Klik pรฅ knappen Gem som
  2. Vรฆlg Excel Macro-Enabled Workbook (*.xlsm) som vist pรฅ billedet nedenfor

Brug Array i Excel VBA

Trin 4 โ€“ Skriv koden

Vi vil nu skrive koden til vores ansรธgning

  1. Hรธjreklik pรฅ knappen Indlรฆs drikkevarer og vรฆlg vis kode
  2. Tilfรธj fรธlgende kode til klikhรฆndelsen for cmdLoadBeverages
Private Sub cmdLoadBeverages_Click()
    Dim Drinks(1 To 4) As String

    Drinks(1) = "Pepsi"
    Drinks(2) = "Coke"
    Drinks(3) = "Fanta"
    Drinks(4) = "Juice"

    Sheet1.Cells(1, 1).Value = "My Favorite Beverages"
    Sheet1.Cells(2, 1).Value = Drinks(1)
    Sheet1.Cells(3, 1).Value = Drinks(2)
    Sheet1.Cells(4, 1).Value = Drinks(3)
    Sheet1.Cells(5, 1).Value = Drinks(4)
End Sub

HER,

Code Handling
Dรฆmpe drinks (1 til 4) som streng
  • Den erklรฆrer en array-variabel kaldet Drinks. Det fรธrste array-indeks er 1 og det sidste array-indeks er 4.
Drikkevarer(1) = "Pepsi"
  • Tildeler vรฆrdien Pepsi til det fรธrste array-element. Den anden lignende kode gรธr det samme for de andre elementer i arrayet.
Sheet1.Cells(1, 1).Vรฆrdi = โ€œMine yndlingsdrikkeโ€
  • Skriver vรฆrdien Mine yndlingsdrikke i celleadresse A1. Ark1 henviser til arket, og Cells(1,1) henviser til rรฆkke nummer 1 og kolonne 1 (B)
Ark1.Celler(2, 1).Vรฆrdi = Drikkevarer(1)
  • Skriver vรฆrdien af โ€‹โ€‹matrixelementet med indeks 1 til rรฆkke nummer to i kolonne 1

Tester vores applikation

Nรฅr koden er pรฅ plads, er det sidste trin at kรธre knappen og bekrรฆfte, at arrayet udfylder arket. Vรฆlg fanen Udvikler, og sรธrg for, at knappen Designtilstand er "fra". Indikatoren er, at den vil have en hvid baggrund og ikke en farvet (grรธnlig) baggrund. (Se billedet nedenfor)

Test af en applikation i Excel VBA

Klik pรฅ knappen Indlรฆs drikkevarer

Du fรฅr fรธlgende resultater

Test af en applikation i Excel VBA

Download Excel, der indeholder ovenstรฅende kode

Download ovenstรฅende Excel-fil Code

Ofte Stillede Spรธrgsmรฅl

Et statisk array har en fast stรธrrelse, der er angivet ved deklaration, sรฅsom Dim Arr(12). Et dynamisk array erklรฆres tomt med Dim Arr() og skaleres senere ved hjรฆlp af ReDim, nรฅr antallet af elementer ikke er kendt pรฅ forhรฅnd.

ReDim angiver eller รฆndrer stรธrrelsen pรฅ et dynamisk array, efter det er deklareret. Tilfรธjelse af nรธgleordet Preserve, som i ReDim Preserve Arr(10), bevarer de eksisterende vรฆrdier under รฆndring af stรธrrelse; uden Preserve slettes alle gemte vรฆrdier.

Brug funktionerne LBound og UBound. LBound returnerer det laveste indeks, og UBound returnerer det hรธjeste indeks. Antallet af elementer er lig med UBound(Arr) minus LBound(Arr) plus รฉn, hvilket fungerer for bรฅde statiske og dynamiske arrays.

Ja. AI-assistenter som Copilot genererer array-deklarationer og loops fra en almindelig anmodning, for eksempel indlรฆser de ti produktnavne i en kolonne. Udvikleren indsรฆtter koden i editoren og tester den pรฅ en kopi af projektmappen.

Ja. AI-assistenter lรฆser fejlen "Subscript out of range" og koden, peger derefter pรฅ det indeks, der overskrider array-grรฆnserne, og foreslรฅr en lรธsning, f.eks. justering af ReDim-stรธrrelsen eller loop-tรฆlleren. Udvikleren anvender og tester det igen.

Opsummer dette indlรฆg med: