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 
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:=Falseund 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 -