Dynamisk matrise i Excel VBA - Enkle Excel -makroer

Innholdsfortegnelse

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

Legg til noen tall i kolonne A.

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

1. Først erklærer vi matrisen med tall. Deklarer også to variabler av typen Heltall. En navngitt størrelse og en som heter i.

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

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

2. Deretter bestemmer vi størrelsen på matrisen og lagrer den i den variable størrelsen. Du kan bruke regnearksfunksjonen CountA til dette. Legg til følgende kodelinje:

size = WorksheetFunction.CountA (regneark (1). kolonner (1))

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

ReDim -tall (størrelse)

4. Deretter initialiserer vi hvert element i matrisen. Vi bruker en sløyfe.

For i = 1 Til størrelse
tall (i) = Celler (i, 1). Verdi
Neste jeg

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

MSGBox -tall (størrelse)

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

Resultat:

7. For å tydelig se hvorfor dette kalles en dynamisk matrise, legg til et tall i kolonne A.

8. Klikk på kommandoknappen igjen.

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

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

ReDim -tall (3)
MsgBox -tall (1)

Resultat:

Matrisen er tom.

10. Når du vil bevare dataene i den eksisterende matrisen når du redimensjonerer dem, bruker du søkeordet Bevar.

ReDim Bevar tall (3)
MsgBox -tall (1)

Resultat:

Du vil bidra til utvikling av området, dele siden med vennene dine

wave wave wave wave wave