Excel: Cells.Replace SucheLeerFehler abfangen

Hallo Experten,
ich habe ein Macro geschrieben, das einen Text ersetzt.
Wie kann ich den Fehler abfangen, wenn der Text nicht gefunden wird?
Meine (unbefriedigende Lösung) bisher, ich füge den Text mindestens einmal ein.
Gibt es da bessere Lösungen?
Danke für Eure Mühen.
Mfg
Winter

ich habe ein Macro geschrieben, das einen Text ersetzt.
Wie kann ich den Fehler abfangen, wenn der Text nicht gefunden
wird?
Meine (unbefriedigende Lösung) bisher, ich füge den Text
mindestens einmal ein.
Gibt es da bessere Lösungen?

Hi Winter,
wo ist der relevante Code?

Hier kommt kein Fehler:

Option Explicit
'
Sub ersetz()
Dim Zelle
For Each Zelle In ActiveSheet.Range("A1:A10")
 Zelle = Zelle.Replace("abc", "xyz")
Next Zelle
End Sub

Gruß
Reinhard

Hi Reinhard,
Danke für deine fixe Antwort (ich sollte das näcshte mal ein Reload machen, dann habe ich Deine Antwort auch NOCH schneller :wink:
Ich programmiere doch mit macro aufzeichnen und dann den Code ausbessern also :

Cells.Replace What:="abc", Replacement:="xyz", LookAt:=xlPart, \_
 SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, \_
 ReplaceFormat:=False

und wenn er dann keinen abc findet, steigt das Macro aus.
aber ich bin ja lernbereit und werde absofort nur noch deinden Code verwenden. der ist zu dem noch kürzer.
Danke
Winter
P.S.
mit

Cells.find(abc)

kann ich dann auch

.EntireRow.Delete

anwenden?
Danke?

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Grüezi Winter

ich habe ein Macro geschrieben, das einen Text ersetzt.
Wie kann ich den Fehler abfangen, wenn der Text nicht
gefunden wird?
Gibt es da bessere Lösungen?

Ich programmiere doch mit macro aufzeichnen und dann den Code
ausbessern also :

Cells.Replace What:=„abc“, Replacement:=„xyz“,
LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False,
SearchFormat:=False, _
ReplaceFormat:=False

und wenn er dann keinen abc findet, steigt das Macro aus.

Du könntest auch erst prüfen ob der gesuchte Wert vorhanden ist, und die Ersetzung dann durchführen:

 If Application.WorksheetFunction.CountIf(Cells, "\*abc\*") \> 0 Then
 Cells.Replace What:="abc", \_
 Replacement:="xyz", \_
 LookAt:=xlPart, \_
 SearchOrder:=xlByRows, \_
 MatchCase:=False, \_
 SearchFormat:=False, \_
 ReplaceFormat:=False
 End If

mit

Cells.find(abc)

kann ich dann auch

.EntireRow.Delete

anwenden?

Aber klar doch - wenn der Wert gefunden wird (ansonsten gibts wieder einen Fehler) kannst Du die betreffende Zeile direkt so löschen:

 Cells.Find(What:="abc").EntireRow.Delete


Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -