Verwendung der Selection.Find
Methode in VBA
Schritt-für-Schritt-Anleitung
Um die Selection.Find
Methode in VBA zu verwenden und dabei Fehler wie "Objektvariable nicht definiert" zu vermeiden, kannst Du folgendes Beispiel nutzen:
-
Definiere die Variable: Setze z
auf die Zelle, die Du suchen möchtest.
z = ActiveCell
-
Führe die Suche durch: Verwende die Selection.Find
Methode, um nach z
im angegebenen Bereich zu suchen.
If Not Selection.Find(What:=z, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False) Is Nothing Then
Selection.Find(What:=z).Activate
Else
MsgBox "Name nicht gefunden"
End If
-
Fehlerbehandlung: Wenn der gesuchte Name nicht gefunden wird, wird eine Nachricht angezeigt.
Häufige Fehler und Lösungen
-
Objektvariable nicht definiert: Dieser Fehler tritt auf, wenn Selection.Find
nichts zurückgibt. Um dies zu vermeiden, stelle sicher, dass Du die Suche in einer If-Anweisung verpackst, wie im obigen Beispiel gezeigt.
-
Falscher Bereich: Vergewissere Dich, dass der Bereich (Range("J17:J65")
) korrekt angegeben ist und die gesuchte Zelle tatsächlich innerhalb dieses Bereichs liegt.
Alternative Methoden
Wenn Du nicht die Selection.Find
Methode verwenden möchtest, kannst Du eine Schleife verwenden, um die Zellen im gewünschten Bereich manuell zu durchsuchen:
Dim cell As Range
Dim found As Boolean
found = False
For Each cell In Range("J17:J65")
If cell.Value = z Then
cell.Select
found = True
Exit For
End If
Next cell
If Not found Then
MsgBox "Name nicht gefunden"
End If
Diese Methode bietet mehr Kontrolle, kann jedoch komplexer sein.
Praktische Beispiele
Hier ist ein vollständiges Beispiel, das die Selection.Find
Methode in einer Prozedur verwendet:
Sub SucheNachNamen()
Dim z As Variant
z = ActiveCell.Value ' Der gesuchte Name
If Not Selection.Find(What:=z, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False) Is Nothing Then
Selection.Find(What:=z).Activate
Else
MsgBox "Name nicht gefunden"
End If
End Sub
Dieses Makro sucht nach dem Namen, der in der aktiven Zelle steht, und zeigt eine Nachricht an, wenn der Name nicht gefunden wird.
Tipps für Profis
- Achte darauf, die Option
MatchCase
zu verwenden, wenn die Groß-/Kleinschreibung eine Rolle spielt.
- Nutze die
After
-Option, um die Suche ab einer bestimmten Zelle zu starten, was nützlich sein kann, wenn Du mehrfach suchen musst.
- Experimentiere mit anderen Suchparametern wie
LookIn
und LookAt
, um die Suche weiter anzupassen.
FAQ: Häufige Fragen
1. Wie kann ich die Selection.Find
Methode für andere Bereiche verwenden?
Du kannst die Methode einfach anpassen, indem Du den gewünschten Bereich in der Range
-Anweisung änderst.
2. Was passiert, wenn ich die LookIn
-Option auf xlValues
setze?
Mit xlValues
wird nur nach den sichtbaren Werten in den Zellen gesucht, während xlFormulas
auch die Formeln berücksichtigt.
3. Wie kann ich die Suche nach mehreren Kriterien durchführen?
Du kannst eine Schleife verwenden, um die Selection.Find
Methode für verschiedene Suchbegriffe zu wiederholen oder die Bedingungen innerhalb der If-Anweisung kombinieren.