/ / Dynamische matrix in Excel VBA

Dynamische matrix in Excel VBA

Als de grootte van uw array toeneemt en u de grootte van de array niet wilt herstellen, kunt u de ReDim-trefwoord. Excel VBA wijzigt vervolgens automatisch de grootte van de array.

Voeg enkele cijfers toe aan kolom A.

Dynamische matrix in Excel VBA

Plaats een opdrachtknop op uw werkblad en voeg de volgende coderegels toe:

1. Eerst verklaren we de array met de naam nummers. Declareer ook twee variabelen van het type Integer. Eén benoemde grootte en één met de naam i.

Dim numbers() As Integer, size As Integer, i As Integer

Opmerking: de array heeft nog geen grootte. nummers, grootte en ik worden hier willekeurig gekozen, u kunt elke naam gebruiken. Vergeet niet om deze namen in de rest van uw code te vermelden.

2. Vervolgens bepalen we de grootte van de array en slaan deze op in de variabele grootte. U kunt hiervoor de werkbladfunctie CountA gebruiken. Voeg de volgende coderegel toe:

size = WorksheetFunction.CountA(Worksheets(1).Columns(1))

3. We weten nu hoe groot de array is en we kunnen deze opnieuw dimensioneren. Voeg de volgende coderegel toe:

ReDim numbers(size)

4. Vervolgens initialiseren we elk element van de array. We gebruiken een lus.

For i = 1 To size
    numbers(i) = Cells(i, 1).Value
Next i

5. We tonen het laatste element van de array met behulp van een MsgBox.

MsgBox numbers(size)

6. Sluit de Visual Basic-editor en klik op de opdrachtknop op het werkblad.

Resultaat:

Laatste element van de array

7. Voeg nu een nummer toe aan kolom A om duidelijk te zien waarom dit een dynamische array wordt genoemd.

Nummer toevoegen

8. Klik nogmaals op de opdrachtknop.

Dynamisch matrixresultaat

Conclusie: Excel VBA heeft de grootte van deze dynamische array automatisch gewijzigd.

9. Wanneer u het ReDim-sleutelwoord gebruikt, wist u alle bestaande gegevens die momenteel in de array zijn opgeslagen. Voeg bijvoorbeeld de volgende coderegels toe aan de eerder gemaakte code:

ReDim numbers(3)
MsgBox numbers(1)

Resultaat:

Without Preserve

De array is leeg.

10. Gebruik het sleutelwoord behouden als u de gegevens in de bestaande array wilt behouden wanneer u deze opnieuw indeelt.

ReDim Preserve numbers(3)
MsgBox numbers(1)

Resultaat:

Met behoud

Lees ook: