VBA-matrixen in Excel: typen en gebruiksvoorbeeld

⚡ Slimme samenvatting

In Excel VBA-arrays worden groepen gerelateerde waarden van hetzelfde gegevenstype onder één naam opgeslagen, die toegankelijk zijn via een index. Deze pagina legt statische en dynamische arrays uit, evenals één-, twee- en multidimensionale arrays, de declaratiesyntaxis en een uitgewerkt voorbeeld van het vullen van een drankje.

  • ???? Arrayconcept: Een enkele benoemde geheugenlocatie die meerdere waarden van hetzelfde gegevenstype bevat, gescheiden door een index.
  • 🎯 Voordelen: Arrays groeperen gerelateerde gegevens, verminderen het aantal variabelen en maken het ophalen en sorteren van gegevens sneller.
  • 📌 Statische array: Gedeclareerd met een vaste grootte, bijvoorbeeld Dim ArrayMonth(12) As String, wanneer het aantal elementen bekend is.
  • 🔄 Dynamische array: De array wordt leeg gedeclareerd met Dim ArrayMonth() en later op grootte gebracht met ReDim wanneer het aantal elementen onbekend is.
  • 📐 Afmetingen: Een array gebruikt een, twee of meer indexen om afzonderlijke lijsten, tabellen of gegevens op meerdere niveaus te modelleren.
  • 🧪 Uitgewerkt voorbeeld: Een opdrachtknop laadt vier dranknamen uit een array in werkbladcellen met behulp van Sheet1.Cells.

Excel VBA-arrays

Wat is VBA-array?

Een array wordt gedefinieerd als een geheugenlocatie die meer dan één waarde kan opslaan. De waarden moeten allemaal van hetzelfde gegevenstype zijn. Stel dat u een lijst met uw favoriete dranken in één enkele variabele wilt opslaan. Hiervoor kunt u een VBA-array gebruiken.

Door een array te gebruiken, kunt u met dezelfde naam naar de gerelateerde waarden verwijzen. U kunt een index of subscript gebruiken om ze uit elkaar te houden. De afzonderlijke waarden worden de elementen van de Excel VBA-array genoemd. Ze zijn aaneengesloten vanaf index 0 tot en met de hoogste indexwaarde.

In deze zelfstudie wordt ervan uitgegaan dat u Microsoft Excel versie 2013. De kennis is nog steeds van toepassing op andere versies van Microsoft Excel ook.

Wat zijn de voordelen van arrays?

Voordat je code voor arrays schrijft, is het handig om te begrijpen waarom arrays de moeite waard zijn om te gebruiken. Hieronder volgen enkele voordelen van de VBA-arrayfunctie.

  1. Groepeer logisch gerelateerde gegevens samen – stel dat u een lijst met studenten wilt opslaan. U kunt een enkele arrayvariabele gebruiken die afzonderlijke locaties heeft voor leerlingcategorieën, zoals de kleuterschool, de basisschool, de middelbare school, enz.
  2. Arrays maken het gemakkelijk om onderhoudbare code te schrijven. Voor dezelfde logisch gerelateerde gegevens kunt u één enkele variabele definiëren, in plaats van meer dan één variabele te definiëren.
  3. Betere prestaties – zodra een array is gedefinieerd, kunnen gegevens sneller worden opgehaald, gesorteerd en gewijzigd.

Soorten arrays in VBA

VBA ondersteunt twee soorten arrays, namelijk;

  • Statisch – Dit soort arrays hebben een vast, vooraf bepaald aantal elementen dat kan worden opgeslagen. U kunt de grootte van het gegevenstype van een statische array niet wijzigen. Deze zijn handig als u met bekende entiteiten wilt werken, zoals het aantal dagen in een week, geslacht, enz.Bijvoorbeeld: Dim ArrayMonth(12) als tekenreeks
  • Dynamisch – Dit soort arrays hebben geen vast, vooraf bepaald aantal elementen dat kan worden opgeslagen. Deze zijn handig bij het werken met entiteiten waarvan u het aantal niet vooraf kunt bepalen.Bijvoorbeeld: Dim ArrayMonth() als variant

Zodra je weet welk type het beste bij je gegevens past, is de volgende stap de declaratiesyntaxis voor elk type.

Syntaxis voor het declareren van arrays

statische arrays

De syntaxis voor declareren STATISCH arrays is als volgt:

Dim arrayName (n) as datatype

HIER,

Code Actie
Dim arrayName (n) gegevenstype
  1. Het declareert een array-variabele genaamd arrayName met een grootte van n en datatype. Grootte verwijst naar het aantal elementen dat de array kan opslaan.

Dynamische arrays

De syntaxis voor declareren DYNAMIC arrays is als volgt:

Dim arrayName() as datatype
ReDim arrayName(4)

HIER,

Code Actie
Dim arrayName () gegevenstype
  1. Het declareert een arrayvariabele met de naam arrayName zonder het aantal elementen op te geven
ReDim arraynaam(4)
  1. Het specificeert de arraygrootte nadat de array is gedefinieerd.

Array-afmetingen

Een array kan één dimensie, twee dimensies of multidimensionaal zijn.

  • Eén dimensie: In deze dimensie gebruikt de array slechts één index. Bijvoorbeeld een aantal mensen van elke leeftijd.
  • Twee dimensies: In deze dimensie gebruikt de array twee indexen. Bijvoorbeeld een aantal leerlingen in elke klas. Het vereist het aantal klassen en het studentnummer in elke klas
  • Multidimensionaal: In deze dimensie gebruikt de array meer dan twee indexen. Temperaturen overdag bijvoorbeeld. (30, 40, 20).

Array gebruiken in Excel VBA

Nu de theorie behandeld is, kunnen we een array in een echt werkblad gebruiken. We gaan een eenvoudige applicatie maken. Deze applicatie vult een Excel-blad met gegevens uit een arrayvariabele. In dit VBA-arrayvoorbeeld gaan we de volgende dingen doen.

  • Maak een nieuw Microsoft Excel-werkmap en sla deze op als Excel-werkmap met macro's (*.xlsm)
  • Voeg een opdrachtknop toe aan de werkmap
  • Stel de naam- en bijschrifteigenschappen van de opdrachtknop in
  • Programmeren van de VBA die het Excel-blad vult

Laten we deze oefening stap voor stap doen,

Stap 1 – Maak een nieuwe werkmap

  1. Open Microsoft Excel
  2. Sla de nieuwe werkmap op als VBA Arrays.xlsm

Stap 2 – Voeg een opdrachtknop toe

Let op: In deze sectie wordt ervan uitgegaan dat u bekend bent met het proces voor het maken van een interface in Excel. Als u niet bekend bent, lees dan de tutorial VBA Excel-formuliercontrole en ActiveX-controle. Het laat u zien hoe u de interface maakt

  1. Voeg een opdrachtknop toe aan het blad

Gebruik Array in Excel VBA

  1. Stel de eigenschap name in op cmdLoadBeverages
  2. Stel de eigenschap bijschrift in op Dranken laden

Uw GUI zou er nu als volgt uit moeten zien

Gebruik Array in Excel VBA

Stap 3 – Sla het bestand op

  1. Klik op de knop Opslaan als
  2. Kies Excel Macro-Enabled Workbook (*.xlsm) zoals weergegeven in de onderstaande afbeelding

Gebruik Array in Excel VBA

Stap 4 – Schrijf de code

We gaan nu de code voor onze applicatie schrijven

  1. Klik met de rechtermuisknop op de knop Dranken laden en selecteer code bekijken
  2. Voeg de volgende code toe aan de klikgebeurtenis van 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

HIER,

Code Actie
Dim Drankjes(1 Tot 4) Als String
  • Het declareert een array variabele genaamd Drinks. De eerste array index is 1 en de laatste array index is 4.
Drankjes(1) = “Pepsi”
  • Wijst de waarde Pepsi toe aan het eerste array-element. De andere soortgelijke code doet hetzelfde voor de andere elementen in de array.
Sheet1.Cells(1, 1).Value = “Mijn favoriete drankjes”
  • Schrijft de waarde Mijn favoriete dranken in celadres A1. Blad1 verwijst naar het blad, en Cellen(1,1) verwijst naar rijnummer 1 en kolom 1 (B)
Blad1.Cellen(2, 1).Waarde = Drankjes(1)
  • Schrijft de waarde van het array-element met index 1 naar rij nummer twee van kolom 1

Onze applicatie testen

Nu de code is toegevoegd, is de laatste stap het activeren van de knop en controleren of de array het werkblad vult. Selecteer het tabblad Ontwikkelaar en zorg ervoor dat de knop Ontwerpmodus is uitgeschakeld. Dit is te zien aan de witte achtergrond in plaats van de groenachtige achtergrond. (Zie onderstaande afbeelding)

Een applicatie testen in Excel VBA

Klik op de knop Dranken laden

U krijgt de volgende resultaten

Een applicatie testen in Excel VBA

Download Excel met bovenstaande code

Download het bovenstaande Excel-bestand. Code

Veelgestelde vragen

Een statische array heeft een vaste grootte die bij de declaratie wordt ingesteld, bijvoorbeeld Dim Arr(12). Een dynamische array wordt leeg gedeclareerd met Dim Arr() en later aangepast met ReDim wanneer het aantal elementen niet van tevoren bekend is.

ReDim stelt de grootte van een dynamische array in of wijzigt deze nadat deze is gedeclareerd. Door het sleutelwoord Preserve toe te voegen, zoals in ReDim Preserve Arr(10), blijven de bestaande waarden behouden tijdens het wijzigen van de grootte; zonder Preserve worden alle opgeslagen waarden gewist.

Gebruik de functies LBound en UBound. LBound retourneert de laagste index en UBound de hoogste index. Het aantal elementen is gelijk aan UBound(Arr) min LBound(Arr) plus één, wat werkt voor zowel statische als dynamische arrays.

Ja. AI-assistenten zoals Copilot genereren arraydeclaraties en lussen op basis van een eenvoudig verzoek, bijvoorbeeld om tien productnamen in een kolom te laden. De ontwikkelaar plakt de code in de editor en test deze op een kopie van het werkblad.

Ja. AI-assistenten lezen de foutmelding "Subscript out of range" en de code, wijzen vervolgens naar de index die de arraygrenzen overschrijdt en stellen een oplossing voor, zoals het aanpassen van de ReDim-grootte of de lussteller. De ontwikkelaar voert de oplossing uit en test het opnieuw.

Vat dit bericht samen met: