Cells.Find(What:=Wert3, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Select
Das hier endet in einem Laufzeitfehler, wenn Wert3 nicht gefunden wird, da die Find-Methode Nothing liefert und damit die Select-Methode nicht aufgerufen werden kann.
So sollte eine Suche in etwa aussehen:
Dim rngResult As Excel.Range
With Worksheets("ZP").Range("C1").CurrentRegion
Set rngResult = .Find("Wert1", , xlValues, xlWhole, xlByRows, xlNext, False, False, False)
End With
If rngResult Is Nothing Then
' Suche hat KEIN Ergebnis geliefert
Debug.Print "Suche ohne Ergebnis!"
Else
' Suche hat ein Ergebnis geliefert
Debug.Print "Suche war in Zelle " & rngResult.Address & " erfolgreich!"
End If
man sollte immer das Blatt angeben und wenn möglich den Bereich, in welchem gesucht werden soll. In dem Beispiel oben gebe ich an, dass der Datenbereich in C1 beginnt (das ist sozusagen die linke obere Ecke der Daten/Tabelle). Die Eigenschaft CurrentRegion liefert dann den Bereich anhand bestimmter Kriterien/Merkmale (siehe Link).
Anschließend wird die Find-Methode aufgerufen und dessen Rückgabewert in der Variable rngResult zwischengespeichert. Diese Variable wertet man jetzt aus - hier im Beispiel: ob etwas gefunden werden konnte, oder nicht.
Mit Selection und Select solltest du nach Möglichkeit nicht arbeiten - dadurch können schwer aufzuspürende Fehler auftreten. Wie du oben im Beispiel siehst, ist es ist auch nicht notwendig diese zu benutzen.
Grüße
|