/ / Dynamisk Array i Excel VBA

Dynamisk Array i Excel VBA

Om storleken på din matris ökar och du inte vill fixa storleken på matrisen, kan du använda ReDim-nyckelord. Excel VBA sedan ändrar storleken på array automatiskt.

Lägg till några siffror i kolumn A.

Dynamisk Array i Excel VBA

Placera en kommandoknapp på ditt arbetsblad och lägg till följande kodlinjer:

1. Först deklarerar vi arrayen med namngivna nummer. Angiv också två variabler av typen Integer. En namngiven storlek och en som heter i.

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

Obs! Arrayen har ingen storlek än. siffror, storlek och jag är slumpmässigt valda här, du kan använda några namn. Kom ihåg att hänvisa till dessa namn i resten av din kod.

2. Därefter bestämmer vi storleken på arrayen och lagrar den i variabelstorleken. Du kan använda kalkylbladsfunktionen CountA för detta. Lägg till följande kodrad:

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

3. Vi känner nu till storleken på matrisen och vi kan redimensionera den. Lägg till följande kodrad:

ReDim numbers(size)

4. Nästa, vi initierar varje element i arrayen. Vi använder en slinga.

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

5. Vi visar det sista elementet i arrayen med hjälp av en MsgBox.

MsgBox numbers(size)

6. Avsluta Visual Basic Editor och klicka på kommandoknappen på arket.

Resultat:

Arrayets sista element

7. För att tydligt se varför detta kallas en dynamisk matris, lägg till ett nummer till kolumn A.

Lägg till nummer

8. Klicka på kommandoknappen igen.

Dynamiskt Array Resultat

Slutsats: Excel VBA har automatiskt ändrat storleken på denna dynamiska array.

9. När du använder ReDim-sökordet raderas alla befintliga data som för tillfället lagras i matrisen. Till exempel lägg till följande kodlinjer till den tidigare skapade koden:

ReDim numbers(3)
MsgBox numbers(1)

Resultat:

Utan Bevara

Arrayen är tom.

10. När du vill behålla uppgifterna i den befintliga matrisen när du redimensionerar den, använd Preserve-sökordet.

ReDim Preserve numbers(3)
MsgBox numbers(1)

Resultat:

Med Bevara

Läs också: