Lisa muss die letzten beiden Wörter in allen Absätzen eines Dokuments finden und den Abstand zwischen diesen Wörtern durch einen nicht unterbrechenden Abstand ersetzen. Sie fragt sich, ob dies mit Suchen und Ersetzen möglich ist.

Der einfachste Weg, dies ohne Verwendung eines Makros zu tun, besteht darin, sich auf die Platzhalterfunktionen von Suchen und Ersetzen zu verlassen. Der Schlüssel dazu ist, sich daran zu erinnern, dass Sie die letzten beiden Wörter in dem, was Sie finden, nicht wirklich identifizieren müssen – Sie müssen nur das letzte Wort mit dem vorhergehenden Leerzeichen identifizieren. Befolgen Sie diese Schritte:

  1. Drücken Sie Strg + H. Word zeigt die Registerkarte Ersetzen des Dialogfelds Suchen und Ersetzen an.

  2. Klicken Sie auf die Schaltfläche Mehr, falls sichtbar. (Siehe Abbildung 1.)

  3. Aktivieren Sie das Kontrollkästchen Platzhalter verwenden.

  4. Geben Sie im Feld Suchen nach Folgendes ein: () ([0-9A-Za-z ~ -] \ {1,}) ([. \! \? \:]) (^ 13). Geben Sie im Feld Ersetzen durch Folgendes ein: ^ s \ 2 \ 3 \ 4. Klicken Sie auf Alle ersetzen.

Wie dies tatsächlich funktioniert, muss möglicherweise nur ein wenig erklärt werden. Der Trick hier ist das, wonach Sie suchen, wie in Schritt 4 angegeben. Jedes gesuchte Element ist von (Klammern) umgeben, sodass es einfach ist, sie auszuwählen und im Feld Ersetzen durch auf sie zu verweisen (Schritt 5). Die vier Elemente im Feld Suchen nach (wiederum in Klammern umgeben) lauten wie folgt:

  1. ()

  2. ([0-9A-Za-z ~ -] \ {1,})

  3. ([. \! \? \:])

  4. (^ 13)

Das erste Element ist ein einzelnes Leerzeichen. Die zweite ist eine beliebige Anzahl von Ziffern, Buchstaben oder Strichen. (Es ist der letzte Teil dieses Elements – \ {1,} -, der angibt, dass eine beliebige Anzahl von Ziffern, Buchstaben oder Bindestrichen vorhanden sein kann.) Dies ist das Element, das das Wort am Ende des Absatzes angibt und das es enthält die Möglichkeit, dass das Wort Bindestriche enthält, sodass zusammengesetzte Wörter als ein einzelnes Wort behandelt werden. Das dritte Element ist eines der gezeigten Satzzeichen, und das vierte Element ist die tatsächliche Absatzende-Markierung.

Die Spezifikation Ersetzen durch (Schritt 5) ersetzt einfach das erste Element (das Leerzeichen) durch ein nicht unterbrechendes Leerzeichen und setzt dann das zweite, dritte und vierte Element wieder ein.

Es ist zu beachten, dass es einige Szenarien gibt, in denen dieser Such- und Ersetzungsansatz nicht funktioniert. Erstens funktioniert es nicht, wenn Ihr Absatz nachgestellte Leerzeichen zwischen dem Satzzeichen und der Markierung am Ende des Absatzes enthält. Sie können Suchen und Ersetzen verwenden, um diese im gesamten Dokument zu entfernen, bevor Sie die obigen Schritte zum Suchen und Ersetzen ausführen.

Die zweite Situation, in der dies nicht funktioniert, besteht darin, dass Ihr Absatz mit einer zusammengesetzten Interpunktion endet, z. B. einem Punkt gefolgt von einem Anführungszeichen oder einem Anführungszeichen gefolgt von einem Doppelpunkt. Bei der Platzhaltersuche wird erwartet, dass am Ende des Absatzes nur ein einziges Interpunktionszeichen angezeigt wird, und es muss eines der vier angegebenen Interpunktionszeichen sein.

Die dritte Situation, in der es nicht funktioniert, ist, wenn das letzte Wort des Absatzes eine Art Interpunktion enthält. Wenn das letzte Wort beispielsweise tatsächlich eine Zahl wie 1.234 ist, verhindert das Einfügen des Kommas, dass die Übereinstimmung auftritt. Dies könnte behoben werden, indem das Komma in das zweite Element eingefügt wird, nach dem gesucht wird, aber die Häufigkeit, mit der dies geschehen könnte, schien winzig genug, dass ich es in den obigen Schritten nicht zugelassen habe.

Wenn Sie einen makrobasierten Ansatz für die Substitution bevorzugen, können Sie das folgende Makro verwenden:

Sub LastTwo()

Dim p As Paragraph     Dim J As Integer     Dim K As Integer     Dim sTemp As String

For Each p In ActiveDocument.Paragraphs         J = p.Range.Words.Count         For K = J To 1 Step -1             sTemp = p.Range.Words(K)

If Right(sTemp, 1) = " " Then                 p.Range.Words(K) = RTrim(sTemp) & Chr(160)

K = 1             End If         Next K     Next p End Sub

Das Makro durchläuft jeden Absatz Ihres Dokuments und dann die Wörter in den Absätzen rückwärts. Es sucht nach dem ersten Wort, das ein nachfolgendes Leerzeichen enthält, und ersetzt dieses Leerzeichen durch ein nicht unterbrechendes Leerzeichen.

Dieses Makro hat eine interessante Sache: Es funktioniert möglicherweise nicht auf allen Systemen wie erwartet. Wenn Sie nach dem Ausführen kein Leerzeichen erhalten, sondern stattdessen ein kleines „Kreuz“ zwischen den letzten beiden Wörtern sehen, ersetzen Sie einfach Chr (160) im Code durch Chr (202). Es wäre viel einfacher, wenn Word eine definierte Aufzählung für ein nicht unterbrechendes Leerzeichen enthalten würde, dies ist jedoch nicht der Fall. Stattdessen müssen Sie sich für einen nicht unterbrechenden Bereich auf den ASCII-Code verlassen, der nicht auf allen Systemen gleich zu sein scheint.

_Hinweis: _

Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der WordTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.

WordTips ist Ihre Quelle für kostengünstige Microsoft Word-Schulungen.

(Microsoft Word ist die weltweit beliebteste Textverarbeitungssoftware.) Dieser Tipp (13577) gilt für Microsoft Word 2007, 2010, 2013, 2016, 2019 und Word in Office 365.