Leeres Array in Excel VBA anlegen
Schritt-für-Schritt-Anleitung
Um ein leeres Array in Excel VBA zu erstellen, das die gleiche Größe wie ein zuvor befülltes Array hat, befolge diese Schritte:
-
Daten in ein Array einlesen:
Beginne damit, dein Ausgangsarray mit Daten zu befüllen. Hier ist ein Beispiel:
Dim TMPDAT As Variant
TMPDAT = Range("A1:B3").Value
-
Leeres Array deklarieren:
Verwende ReDim
, um ein leeres Array mit den gleichen Dimensionen wie dein Ausgangsarray zu erstellen:
Dim VARDAT() As Variant
ReDim VARDAT(LBound(TMPDAT, 1) To UBound(TMPDAT, 1), LBound(TMPDAT, 2) To UBound(TMPDAT, 2))
-
Daten in das leere Array kopieren (optional):
Wenn du die Daten in das leere Array kopieren möchtest, kannst du dies wie folgt tun:
VARDAT = TMPDAT
Häufige Fehler und Lösungen
-
Fehlermeldung bei Dimensionen: Wenn du ein 2-dimensionales Array verwendest, stelle sicher, dass du beide Dimensionen in ReDim
angibst. Beispiel:
ReDim VARDAT(LBound(TMPDAT, 1) To UBound(TMPDAT, 1), LBound(TMPDAT, 2) To UBound(TMPDAT, 2))
-
Falsche Verwendung von Erase
: Wenn du Erase
verwendest, wird das Array vollständig gelöscht. Um ein leeres Array zu erstellen, verwende stattdessen ReDim
.
Alternative Methoden
Wenn du kein leeres Array erstellen möchtest, sondern nur die Daten temporär speichern willst, kannst du auch direkt auf den Zellbereich zugreifen:
Dim brr As Variant
brr = Range("HA1:HZ65000").Value
Hierbei wird der Zellbereich direkt in ein Variant-Array geladen, ohne dass du ein leeres Array deklarieren musst.
Praktische Beispiele
Hier sind einige praktische Beispiele, wie du ein leeres Array erstellen und nutzen kannst:
-
Beispiel mit ReDim
:
Sub Beispiel()
Dim arrDummy1() As Variant
Dim arrDummy2() As Variant
arrDummy1 = Range("A1:B3").Value
ReDim arrDummy2(LBound(arrDummy1, 1) To UBound(arrDummy1, 1), LBound(arrDummy1, 2) To UBound(arrDummy1, 2))
arrDummy2 = arrDummy1
Range("D1:E3").Value = arrDummy2
End Sub
-
Mit redim a1
:
Dim TMPDAT As Variant
TMPDAT = Range("A1:B3").Value
ReDim VARDAT(LBound(TMPDAT, 1) To UBound(TMPDAT, 1), LBound(TMPDAT, 2) To UBound(TMPDAT, 2))
Tipps für Profis
-
Verwende LBound
und UBound
: Um Fehler bei der Dimensionierung zu vermeiden, nutze immer LBound
und UBound
, um die Dimensionen deines Arrays zu bestimmen.
-
Effizienter Code: Halte deinen Code sauber und effizient, indem du Arrays nur dann verwendest, wenn es notwendig ist. Bei großen Datenmengen kann die Verarbeitung in Arrays die Performance verbessern.
FAQ: Häufige Fragen
1. Wie kann ich ein leeres Array in Excel VBA erstellen?
Nutze ReDim
, um die Dimensionen des Arrays auf die gewünschte Größe festzulegen.
2. Was passiert, wenn ich Erase
auf ein Array anwende?
Erase
löscht alle Elemente des Arrays und gibt den Speicher zurück. Das Array bleibt jedoch in seiner ursprünglichen Dimension bestehen, es wird nur geleert.
3. Kann ich ein leeres Array in einer Funktion zurückgeben?
Ja, du kannst ein leeres Array in einer Funktion zurückgeben, indem du die Funktion als Variant deklarierst und das leere Array zuweist.