VBA - Range Find mit 2 Variablen
Schritt-für-Schritt-Anleitung
Um in Excel mit VBA nach mehreren Werten zu suchen, kannst du die Find
-Methode nutzen. Hier ist eine Schritt-für-Schritt-Anleitung:
-
VBA-Editor öffnen: Drücke ALT + F11
, um den VBA-Editor zu öffnen.
-
Modul erstellen: Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)", wähle Einfügen
und dann Modul
.
-
Code eingeben: Füge den folgenden Code ein:
Dim c As Range
Range("CZ2") = Date
' Aktuelle Kalenderwoche finden
Set c = Rows(1).Find("*KW1", LookIn:=xlValues, lookat:=xlWhole)
If c Is Nothing Then
Set c = Rows(1).Find("*CWREQ1", LookIn:=xlValues, lookat:=xlWhole)
End If
If Not c Is Nothing Then
Cells(1, c.Column).Activate
ActiveCell.FormulaR1C1 = "=WEEKNUM(R[1]C104,21)"
Else
MsgBox "Keine der Spalten -KW1- oder -CWREQ1- wurde gefunden"
End If
-
Code ausführen: Schließe den VBA-Editor und führe den Code über F5
aus oder über ein zugewiesenes Makro.
Häufige Fehler und Lösungen
-
Fehler: "Spalte nicht gefunden"
Dieser Fehler tritt auf, wenn weder KW1
noch CWREQ1
in der ersten Zeile vorhanden sind. Überprüfe, ob die Werte korrekt geschrieben sind.
-
Fehler: Ungültige Formel
Wenn die Formel nicht korrekt ist, stelle sicher, dass die Zellreferenzen in ActiveCell.FormulaR1C1
richtig gesetzt sind.
Alternative Methoden
Wenn du eine umfassendere Suche durchführen möchtest, kannst du auch die Find
-Methode innerhalb einer Schleife einsetzen:
Dim searchValues As Variant
Dim found As Boolean
searchValues = Array("*KW1", "*CWREQ1")
found = False
For Each value In searchValues
Set c = Rows(1).Find(value, LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
found = True
Exit For
End If
Next value
If found Then
MsgBox "Gefunden: " & c.Value
Else
MsgBox "Keiner der Werte wurde gefunden."
End If
Praktische Beispiele
- Suche nach mehreren Werten: Der oben gezeigte Code verwendet eine Schleife, um nach
KW1
und CWREQ1
in der ersten Zeile zu suchen.
- Aktualisierung von Zellen: Du kannst den Code anpassen, um unterschiedliche Formeln basierend auf dem gefundenen Wert einzufügen.
Tipps für Profis
-
Nutze Option Explicit
am Anfang deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.
-
Verwende With
-Anweisungen, um den Code übersichtlicher zu gestalten:
With Rows(1)
Set c = .Find("*KW1", LookIn:=xlValues, lookat:=xlWhole)
If c Is Nothing Then
Set c = .Find("*CWREQ1", LookIn:=xlValues, lookat:=xlWhole)
End If
End With
-
Erweitere die Suche, indem du eine Liste von Suchbegriffen in einem Array speicherst und diese durchgehst.
FAQ: Häufige Fragen
1. Kann ich auch nach mehr als zwei Werten suchen?
Ja, du kannst ein Array mit den Suchbegriffen erstellen und eine Schleife verwenden, um alle Werte zu überprüfen.
2. Was mache ich, wenn die Suche nichts findet?
Du kannst ein MsgBox
-Fenster verwenden, um den Benutzer zu informieren, dass kein Wert gefunden wurde.
3. Welche Excel-Version benötige ich?
Der gezeigte VBA-Code funktioniert in Excel 2010 und höheren Versionen.