Public Array definieren mit variabler Anzahl
Schritt-für-Schritt-Anleitung
Um ein public Array in Excel VBA zu definieren, das eine variable Anzahl von Einträgen hat, gehe wie folgt vor:
-
Deklaration des Arrays: Definiere das Array auf Modulebene als Public
und als Variant
. Beispiel:
Public Arr As Variant
-
Dimensionierung des Arrays: In einer Sub-Prozedur kannst du das Array mit Redim
dimensionieren. Zum Beispiel:
Dim iRows As Integer
iRows = Sheets("Bestellungen").Range("bestellungen").Rows.Count
ReDim Arr(1 To iRows, 1 To 16)
-
Daten einlesen: Fülle dein Array mit Werten aus dem Arbeitsblatt:
Dim iCounter As Integer
For iCounter = 2 To iRows + 1
Arr(iCounter - 1, i) = Sheets("Bestellungen").Cells(iCounter, i).Value
Next iCounter
-
Zusätzliche Dimensionierung: Wenn du das Array später erneut dimensionieren möchtest, benutze ReDim Preserve
nur für die letzte Dimension:
ReDim Preserve Arr(1 To iRows, 1 To 16)
Häufige Fehler und Lösungen
-
Fehler: "Index außerhalb des gültigen Bereichs": Dieser Fehler tritt auf, wenn du auf ein Element des Arrays zugreifst, das nicht existiert. Stelle sicher, dass das Array korrekt dimensioniert ist, bevor du darauf zugreifst.
-
Fehler: "Array bereits dimensioniert": Wenn du versuchst, das Array mit ReDim
erneut zu dimensionieren, ohne es vorher mit Erase
zu leeren, bekommst du diese Fehlermeldung. Verwende Erase Arr
, um das Array zu leeren, bevor du es neu dimensionierst.
Alternative Methoden
Eine alternative Methode zur Verwendung eines public Array ist die direkte Zuordnung eines Zellbereichs zu einer Variant-Variable. Hier ist ein Beispiel, wie du dies tun kannst:
Public Arr As Variant
Sub einlesen()
Dim Bereich As Range
Set Bereich = Sheets("Bestellungen").Range("bestellungen")
Arr = Bereich.Value ' Automatische Dimensionierung
End Sub
Diese Methode erspart dir die Notwendigkeit, das Array manuell zu dimensionieren und ist oft einfacher.
Praktische Beispiele
Hier ist ein einfaches Beispiel, das die oben genannten Schritte zusammenfasst und ein public Array in einer Excel VBA-Anwendung verwendet:
Public Arr As Variant
Sub einlesen()
Dim iRows As Integer
Dim iCounter As Integer
Set Bereich = Sheets("Bestellungen").Range("bestellungen")
iRows = Bereich.Rows.Count
ReDim Arr(1 To iRows, 1 To 16)
For iCounter = 2 To iRows + 1
For i = 1 To 16
Arr(iCounter - 1, i) = Sheets("Bestellungen").Cells(iCounter, i).Value
Next i
Next iCounter
End Sub
Tipps für Profis
-
Verwende Option Base 1
am Anfang deines Moduls, um die Standardbasis für Arrays auf 1 zu setzen. Dies erleichtert die Arbeit mit Arrays, insbesondere wenn du häufig auf Zellen zugreifst.
-
Nutze VBA Resize Array
, um die Größe deines Arrays zur Laufzeit dynamisch anzupassen, wenn sich die Daten ändern.
-
Halte dein Array klein, um die Performance zu optimieren. Große Arrays können die Ausführungsgeschwindigkeit deiner VBA-Anwendungen verlangsamen.
FAQ: Häufige Fragen
1. Wie definiere ich ein Array in VBA?
Du kannst ein Array in VBA mit Dim
oder Public
definieren. Beispiel: Dim Arr() As Variant
.
2. Was ist der Unterschied zwischen ReDim
und ReDim Preserve
?
ReDim
wird verwendet, um die Größe eines Arrays zu ändern, während ReDim Preserve
die bestehenden Werte im Array beibehält, jedoch nur für die letzte Dimension.
3. Kann ich ein Array in VBA initialisieren?
Ja, du kannst ein Array initialisieren, indem du die Werte direkt zuweist, nachdem du es dimensioniert hast.