/ / Dynamisk Array i Excel VBA

Dynamisk Array i Excel VBA

Hvis størrelsen på matrisen øker og du ikke vil fikse størrelsen på matrisen, kan du bruke ReDim søkeord. Excel VBA deretter endres størrelsen på oppsettet automatisk.

Legg til noen tall i kolonne A.

Dynamisk Array i Excel VBA

Legg en kommandoknapp på regnearket og legg til følgende kodelinjer:

1. Først erklærer vi arrayen som heter nummer. Oppgi også to variabler av typen Integer. En navngitt størrelse og en som heter i.

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

Merk: arrayet har ingen størrelse ennå. tall, størrelse og jeg er tilfeldig valgt her, kan du bruke noen navn. Husk å henvise til disse navnene i resten av koden din.

2. Deretter bestemmer vi størrelsen på arrayet og lagrer den i variabelstørrelsen. Du kan bruke regnearkfunksjonen CountA for dette. Legg til følgende kodelinje:

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

3. Vi vet nå størrelsen på arrayet, og vi kan redimensjonere den. Legg til følgende kodelinje:

ReDim numbers(size)

4. Deretter initialiserer vi hvert element i arrayet. Vi bruker en løkke.

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

5. Vi viser det siste elementet i arrayet ved hjelp av en MsgBox.

MsgBox numbers(size)

6. Avslutt Visual Basic Editor og klikk på kommandoknappen på arket.

Resultat:

Siste element av arrayen

7. Nå for å tydelig se hvorfor dette kalles et dynamisk array, legg til et tall til kolonne A.

Legg til nummer

8. Klikk på kommandoknappen igjen.

Dynamisk Array Resultat

Konklusjon: Excel VBA har automatisk endret størrelsen på denne dynamiske gruppen.

9. Når du bruker ReDim-søkeordet, sletter du eksisterende data som er lagret i gruppen. Legg til for eksempel følgende kodelinjer til den tidligere opprettede koden:

ReDim numbers(3)
MsgBox numbers(1)

Resultat:

Uten Bevar

Arrayet er tomt.

10. Når du vil bevare dataene i den eksisterende gruppen når du redimensjonerer den, bruker du Preserve søkeordet.

ReDim Preserve numbers(3)
MsgBox numbers(1)

Resultat:

Med Bevar

Les også: