/ / Dynamic Array i Excel VBA

Dynamisk Array i Excel VBA

Hvis størrelsen på din matrix øges, og du ikke vil rette størrelsen på arrayet, kan du bruge ReDim søgeord. Excel VBA så ændrer størrelsen af ​​arrayet automatisk.

Tilføj nogle tal til kolonne A.

Dynamisk Array i Excel VBA

Placer en kommandoknap på dit regneark og tilføj følgende kodelinjer:

1. Først erklærer vi de array navngivne tal. Erklær også to variabler af typen Integer. En navngivet størrelse og en hedder jeg.

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

Bemærk: Arrayet har ingen størrelse endnu. tal, størrelse og jeg er tilfældigt valgt her, kan du bruge nogen navne. Husk at henvise til disse navne i resten af ​​din kode.

2. Dernæst bestemmer vi størrelsen af ​​arrayet og gemmer den i variabelstørrelsen. Du kan bruge regnearkfunktionen CountA til dette. Tilføj følgende kode linje:

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

3. Vi kender nu størrelsen af ​​arrayet, og vi kan redimensionere det. Tilføj følgende kode linje:

ReDim numbers(size)

4. Dernæst initialiserer vi hvert element i arrayet. Vi bruger en løkke.

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

5. Vi viser det sidste element i arrayet ved hjælp af en MsgBox.

MsgBox numbers(size)

6. Afslut Visual Basic Editor og klik på kommandoknappen på arket.

Resultat:

Sidste element i rækken

7. Nu for at se klart hvorfor dette kaldes et dynamisk array, skal du tilføje et nummer til kolonne A.

Tilføj nummer

8. Klik på kommandoknappen igen.

Dynamisk Array Resultat

Konklusion: Excel VBA har automatisk ændret størrelsen af ​​dette dynamiske array.

9. Når du bruger ReDim-søgeordet, sletter du eksisterende data, der aktuelt er gemt i arrayet. F.eks. Tilføj følgende kodelinjer til den tidligere oprettede kode:

ReDim numbers(3)
MsgBox numbers(1)

Resultat:

Uden Bevar

Arrayet er tomt.

10. Når du vil bevare dataene i det eksisterende array, når du redimensionerer det, skal du bruge Bevar søgeordet.

ReDim Preserve numbers(3)
MsgBox numbers(1)

Resultat:

Med Bevar

Læs også: