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: