Array mit Range füllen in Excel VBA
Schritt-für-Schritt-Anleitung
Um ein Array in Excel VBA aus einem Bereich (Range) zu füllen, kannst du die folgenden Schritte befolgen:
-
Deklariere die Variablen:
Dim arrSrc As Variant
Dim iI As Long
Dim wsGer As Worksheet
Set wsGer = Worksheets("Tabelle1") ' oder der Name deines Arbeitsblatts
-
Fülle das Array mit Werten aus dem Range:
arrSrc = wsGer.Range("A13:A14").Value
-
Verwende eine Schleife, um das Array abzuarbeiten:
For iI = LBound(arrSrc) To UBound(arrSrc)
Worksheets("Tabelle2").Columns("A").Replace What:=arrSrc(iI, 1), _
Replacement:="Kostengruppe", LookAt:=xlPart, _
SearchOrder:=xlByColumns, MatchCase:=True
Next iI
-
Führe den kompletten Code in einem Sub aus:
Sub aaTest()
Dim arrSrc As Variant
Dim iI As Long
Dim wsGer As Worksheet
Set wsGer = Worksheets("Tabelle1")
arrSrc = wsGer.Range("A13:A14").Value
For iI = LBound(arrSrc) To UBound(arrSrc)
Worksheets("Tabelle2").Columns("A").Replace What:=arrSrc(iI, 1), _
Replacement:="Kostengruppe", LookAt:=xlPart, _
SearchOrder:=xlByColumns, MatchCase:=True
Next iI
End Sub
Häufige Fehler und Lösungen
-
Fehler: "Subscript out of range": Dies passiert, wenn du versuchst, auf ein Element des Arrays zuzugreifen, das nicht existiert. Stelle sicher, dass du die richtige Zeile und Spalte angibst: arrSrc(iI, 1).
-
Leeres Array: Wenn arrSrc leer ist, kann der Replace-Befehl nicht ausgeführt werden. Überprüfe den Range, von dem du die Werte lädst.
-
Index außerhalb des gültigen Bereichs: Achte darauf, dass die korrekten Arbeitsblattnamen verwendet werden. Der Fehler tritt auf, wenn du auf ein nicht existierendes Arbeitsblatt zugreifst.
Alternative Methoden
Du kannst ein Array auch manuell befüllen, anstatt es aus einem Range zu laden:
Sub aaTestAlternative()
Dim arrSrc As Variant
arrSrc = Array("Wert1", "Wert2") ' Manuelles Befüllen des Arrays
Dim i As Long
For i = LBound(arrSrc) To UBound(arrSrc)
Worksheets("Tabelle2").Columns("A").Replace What:=arrSrc(i), _
Replacement:="Kostengruppe", LookAt:=xlPart, _
SearchOrder:=xlByColumns, MatchCase:=True
Next i
End Sub
Praktische Beispiele
Ein praktisches Beispiel für das Füllen eines mehrdimensionalen Arrays:
Sub aaTestMehrdimensional()
Dim arrSrc(1 To 2, 1 To 1) As Variant
arrSrc(1, 1) = "Wert1"
arrSrc(2, 1) = "Wert2"
Dim i As Long
For i = 1 To 2
Worksheets("Tabelle2").Columns("A").Replace What:=arrSrc(i, 1), _
Replacement:="Kostengruppe", LookAt:=xlPart
Next i
End Sub
Tipps für Profis
- Nutze
MatchByte:=True, wenn du mit kyrillischen Zeichen arbeitest, um mögliche Probleme beim Suchen und Ersetzen zu vermeiden.
- Überprüfe die Range auf leere Zellen, bevor du das Array füllst, um Laufzeitfehler zu vermeiden.
- Verwende Debug.Print, um die Werte im Array während der Ausführung zu überprüfen.
FAQ: Häufige Fragen
1. Wie kann ich ein Array aus einer größeren Tabelle füllen?
Du kannst den Range anpassen, z.B. arrSrc = wsGer.Range("A1:A100").Value, um mehrere Werte zu laden.
2. Was mache ich, wenn ich ein mehrdimensionales Array füllen möchte?
Verwende die Syntax arrSrc(i, j) und achte darauf, die Indizes korrekt zu setzen. Du kannst auch die Array-Funktion verwenden, um ein mehrdimensionales Array zu erstellen.
3. Wie kann ich überprüfen, ob ein Wert im Array vorhanden ist?
Verwende eine Schleife oder die Application.Match-Funktion, um nach dem Wert im Array zu suchen.