Inhoudsopgave:
Video: Cursus VBA programmeren in Excel 2024
te houden. De meeste programmeertalen ondersteunen arrays, waaronder VBA. Een array is een groep variabelen die een naam delen. U verwijst naar een specifieke variabele in de array met behulp van de arraynaam en een indexnummer tussen haakjes. U kunt bijvoorbeeld een reeks van 12 stringvariabelen definiëren om de namen van de maanden van het jaar te bevatten. Als u de array MonthNames een naam geeft, kunt u het eerste element van de array verwijzen als MonthNames (1), het tweede element als MonthNames (2), enzovoort.
Matrixen declareren
Voordat u een array kunt gebruiken, moet u moet dit declareren. Geen uitzonderingen. In tegenstelling tot normale variabelen, is VBA erg streng over deze regel. U declareert een array met een schematische of openbare instructie, net zoals u een gewone variabele declareert. U moet echter ook het aantal elementen in de array opgeven. U doet dit door het eerste indexnummer, het sleutelwoord To en het laatste indexnummer op te geven - alles tussen haakjes. In het volgende voorbeeld ziet u hoe u een array van 100 gehele getallen declareert:
Dim MyArray (1 tot 100) Als geheel getal
Wanneer u een array declareert, kunt u ervoor kiezen alleen de bovenste index op te geven. Als u de lagere index weglaat, veronderstelt VBA dat dit 0. is. Daarom verklaren beide onderstaande instructies dezelfde array van 101 elementen:
Dim MyArray (0 tot 100) als Integer Dim MyArray (100) As Integer
Als u wilt dat VBA veronderstelt dat 1 (in plaats van 0) de laagste index voor uw arrays is, neemt u de volgende verklaring op in het gedeelte Verklaringen bovenaan uw module:
Optiebasis 1
Deze instructie dwingt VBA om 1 te gebruiken als het eerste indexnummer voor arrays die alleen de bovenste index aangeven. Als deze instructie aanwezig is, zijn de volgende instructies identiek, beide verklaren een matrix met 100 elementen:
Dim MyArray (1 tot 100) als Integer Dim MyArray (100) Als geheel getal
Multidimensional arrays
De arrays gemaakt in de voorgaande voorbeelden zijn alle eendimensionale matrices. Denk aan eendimensionale arrays als een enkele regel van waarden. Arrays die u in VBA maakt, kunnen wel 60 dimensies bevatten, hoewel u zelden meer dan twee of drie dimensies in een array nodig hebt. In het volgende voorbeeld wordt een 81-geheel getalarray met twee dimensies gedeclareerd:
Dim MyArray (1 tot 9, 1 tot 9) als geheel getal
U kunt deze array beschouwen als een matrix van 9 x 9 - perfect voor het opslaan van alle nummers in een Sudoku-puzzel.
Als u naar een specifiek element in deze array wilt verwijzen, moet u twee indexnummers opgeven (vergelijkbaar met de "rij" en de "kolom" in de matrix).Het volgende voorbeeld laat zien hoe u een waarde aan een element in deze array kunt toewijzen:
MyArray (3, 4) = 125
Deze instructie kent een waarde toe aan een enkel element in de array. Als u aan de matrix denkt in termen van een 9 x 9 matrix, wijst dit 125 toe aan het element in de derde rij en de vierde kolom van de matrix.
U kunt als volgt een driedimensionale array declareren met 1, 000 elementen:
Dim My3DArray (1 tot 10, 1 tot 10, 1 tot 10) als geheel getal
U kunt een driedimensionaal denken array als een kubus. Het visualiseren van een array van meer dan drie dimensies is moeilijker.
Dynamische arrays
U kunt dynamische arrays maken. Een dynamische array heeft geen vooraf ingesteld aantal elementen. Declareer een dynamische array met een lege set haakjes:
Dim MyArray () Als geheel getal
Voordat u deze array kunt gebruiken, moet u de ReDim-instructie gebruiken om aan VBA te laten weten hoeveel elementen de array heeft. Gewoonlijk wordt het aantal elementen in de array bepaald terwijl uw code wordt uitgevoerd. U kunt de ReDim-instructie een onbeperkt aantal keren gebruiken, waarbij de grootte van de array zo vaak als nodig wordt gewijzigd. In het volgende voorbeeld ziet u hoe u het aantal elementen in een dynamische array kunt wijzigen. Hierbij wordt ervan uitgegaan dat de variabele NumElements een waarde bevat die door uw code is berekend.
ReDim MyArray (1 tot NumElements)
Wanneer u een array opnieuw dimensioneert met ReDim, wist u alle waarden die momenteel zijn opgeslagen in de arrayelementen. U kunt voorkomen dat de oude waarden worden vernietigd door het trefwoord Te behouden. In het volgende voorbeeld ziet u hoe u de waarden van een array kunt behouden wanneer u de array opnieuw dimensioneert:
ReDim Behoud MyArray (1 tot NumElements)
Als MyArray op dit moment tien elementen heeft en u de voorgaande instructie uitvoert met NumElements gelijk aan 12, de eerste tien elementen blijven intact en de array heeft ruimte voor twee extra elementen (tot het aantal dat is opgenomen in de variabele NumElements). Als NumElements echter gelijk is aan 7, blijven de eerste zeven elementen behouden, maar de resterende drie elementen voldoen aan hun ondergang.