Hi Lothar,
ich hätte dir den Code nicht vorgesetzt, wenn ich ihn nicht vorher getestet hätte. Da hatte alles funktioniert. Offenbar führt nun aber das Ersetzen von Text dazu, dass .Find nur noch auf den gefundenen Bereich angewendet wird, wodurch .Found = False ist und die Schleife vorzeitig abbricht. Keine Ahnung, warum das vorher nicht so war.
Ersetze mal If InQuotes(.Parent.Range) Then .Parent.Text = "_" durch folgenden CodeTeil:
If InQuotes(.Parent.Range) And .Parent.Start >= s And .Parent.End <= e Then
.Parent.Text = "_"
.Parent.Collapse wdCollapseEnd
End If
und definiere zu Beginn deines Makros den Start und Stop der Selektion:
Dim s As Long, e As Long
s = Selection.Start: e = Selection.End
Damit müsste der Code schon beim ersten Start komplett durchlaufen und nur innerhalb der Markierung Ersetzungen vornehmen.
Warum in deinem Beispieltext einige Zeichen ersetzt wurden und Andere nicht, kann ich dir auch nicht sagen. Vielleicht verwendest du einen anderen Zeichensatz? Habs bei mir mit verschiedenen Schriftarten (Times New Roman, Arial, Calibri, Courier New) probiert und es klappt IMMER. Hab allerdings auch das deutsche Tastaturlayout auf meinem Rechner. Vielleicht ist aber durch die o.g. Codekorrektur der Spuk auch bei dir vorbei.
Gruß Mr. K.
|