VBA Arrays: Erstellen, Verwalten und Löschen – Der vollständige Leitfaden

Melden

Hier ist ein ausführliches Tutorial zum Thema Arrays in VBA (Excel) – von der Erstellung bis zum Löschen.


Ein Array (Datenfeld) ist eine spezielle Variable, die mehrere Werte desselben Datentyps unter einem einzigen Namen speichern kann. Dies ist besonders nützlich, wenn du mit Listen oder Tabellendaten arbeitest.


1. Arrays erstellen (Deklarieren)

In VBA gibt es zwei Arten von Arrays: Statische (feste Größe) und Dynamische (flexible Größe).

A. Statische Arrays

Verwende ein statisches Array, wenn du im Voraus genau weißt, wie viele Elemente du speichern möchst.

Sub StatischesArrayBeispiel()
    ' Ein Array für 5 Namen deklarieren (Index 0 bis 4)
    Dim namen(4) As String

    ' Werte zuweisen
    namen(0) = "Max"
    namen(1) = "Anna"
    namen(2) = "Lukas"
    namen(3) = "Julia"
    namen(4) = "Felix"

    MsgBox "Der erste Name ist: " & namen(0)
End Sub

Hinweis: In VBA beginnt der Index standardmäßig bei 0. Dim namen(4) reserviert also Platz für 5 Elemente.

B. Dynamische Arrays

Verwende ein dynamisches Array, wenn sich die Anzahl der Elemente während der Laufzeit ändern kann.

Sub DynamischesArrayBeispiel()
    ' Array ohne Größe deklarieren
    Dim zahlen() As Integer

    ' Größe später festlegen mit ReDim
    ReDim zahlen(2)

    zahlen(0) = 10
    zahlen(1) = 20
    zahlen(2) = 30

    ' Größe ändern und bestehende Daten behalten (Preserve)
    ReDim Preserve zahlen(3)
    zahlen(3) = 40
End Sub

2. Arrays füllen und auslesen

Am effizientesten füllst du Arrays mit Schleifen oder direkt aus einem Excel-Bereich.

Aus einer Range füllen (sehr schnell):

Sub RangeToArray()
    Dim daten As Variant
    ' Liest den Bereich A1:A10 direkt in ein Array ein
    daten = Range("A1:A10").Value

    ' Zugriff: daten(Zeile, Spalte) -> Bei Range-Arrays beginnt der Index immer bei 1!
    MsgBox daten(1, 1)
End Sub

3. Arrays löschen und leeren

Je nachdem, ob es sich um ein statisches oder dynamisches Array handelt, bewirkt der Befehl Erase unterschiedliche Dinge.

A. Den Befehl Erase verwenden

Dies ist die Standardmethode, um Arrays zu bereinigen.

Sub ArrayLoeschen()
    Dim meinArray() As String
    ReDim meinArray(5)

    ' ... Array wird genutzt ...

    ' Array löschen
    Erase meinArray
End Sub

Was passiert bei Erase?

  • Bei dynamischen Arrays: Der Speicherplatz wird komplett freigegeben. Das Array ist danach "leer" und hat keine Dimensionen mehr. Du müsstest erneut ReDim nutzen, um es wieder zu verwenden.
  • Bei statischen Arrays: Die Werte werden auf ihren Standardwert zurückgesetzt (Null bei Zahlen, Leerstring "" bei Strings), aber die Größe des Arrays bleibt erhalten.

B. Einzelne Elemente löschen

Wenn du nur einen bestimmten Wert löschen willst, weist du ihm einfach den Standardwert zu:

namen(2) = "" ' Löscht den Inhalt an Index 2

4. Wichtige Tipps & Funktionen

LBound und UBound

Verwende immer LBound (Lower Bound) und UBound (Upper Bound), um die Grenzen eines Arrays zu ermitteln. Das macht deinen Code sicherer gegen Fehler.

Sub ArrayDurchlaufen()
    Dim i As Long
    Dim arr As Variant
    arr = Array("VBA", "ist", "cool")

    For i = LBound(arr) To UBound(arr)
        Debug.Print arr(i)
    Next i
End Sub

Zusammenfassung der Befehle:

Befehl Beschreibung
Dim arr(n) Erstellt ein statisches Array mit fester Größe.
Dim arr() Deklariert ein dynamisches Array.
ReDim arr(n) Legt die Größe eines dynamischen Arrays fest (löscht Inhalt).
ReDim Preserve arr(n) Ändert die Größe, behält aber die vorhandenen Werte bei.
Erase arr Leert das Array bzw. gibt den Speicher frei.

Fazit

Arrays sind ein mächtiges Werkzeug in VBA, um die Performance deiner Makros zu steigern. Während Dim und ReDim für die Struktur zuständig sind, ist Erase der wichtigste Befehl, um den Arbeitsspeicher sauber zu halten.

0