Erkennen des Beginns eines Satzes in einem Makro (Microsoft Word)
Shelley entwickelt ein Makro, das alle Großschreibungspermutationen von „vorausgesetzt, dass“ („vorausgesetzt, dass“, „vorausgesetzt, dass“ usw.)
ändert in Kleinbuchstaben. Das ist einfach genug, aber wenn die Phrase einen Satz beginnt, sollte das „P“ groß geschrieben werden. Shelley fragt sich, ob es in einem Makro eine Möglichkeit gibt, festzustellen, ob eine Phrase wie „vorausgesetzt, dass“ am Anfang eines Satzes steht.
Es gibt verschiedene Möglichkeiten, dies zu tun. Erstens können Sie Suchen und Ersetzen verwenden, um nacheinander zu suchen und zu ersetzen. Das Makro könnte Folgendes tun:
-
Ändern Sie alle Variationen von „vorausgesetzt, dass“ in Kleinbuchstaben.
-
Suchen Sie nach „. Vorausgesetzt, dass“ (Punkt, Raum, „vorausgesetzt, dass“) und ersetzen Sie es durch „. Vorausgesetzt, dass“ (korrekte Großschreibung).
-
Wiederholen Sie die Suche und ersetzen Sie sie in Schritt 2 durch andere Satzzeichen am Satzende, z. B. ein Ausrufezeichen, ein Fragezeichen oder eines dieser Satzzeichen, gefolgt von einem Anführungszeichen.
Da dies in einem Makro erfolgt, sollte der Prozess sehr schnell gehen.
Hier ist ein Beispiel für eines, das die Arbeit erledigen könnte:
Sub ChangeCase1() Dim vFindText As Variant Dim vReplaceText As Variant Dim orng As Range Dim i As Long vFindText = Array(". provided that", _ "! provided that", _ "? provided that", _ "."" provided that", _ "!"" provided that", _ "?"" provided that") vReplaceText = Array(". Provided that", _ "! Provided that", _ "? Provided that", _ "."" Provided that", _ "!"" Provided that", _ "?"" Provided that") ' Set all occurrences to lowercase Set orng = ActiveDocument.Range With orng.Find .ClearFormatting .Replacement.ClearFormatting Do While .Execute(FindText:="provided that", _ Forward:=True, _ Wrap:=wdFindStop) = True orng.Select orng = "provided that" orng.Collapse wdCollapseEnd Loop End With ' Account for end-of-sentence For i = 0 To UBound(vFindText) Set orng = ActiveDocument.Range With orng.Find .ClearFormatting .Replacement.ClearFormatting Do While .Execute(FindText:=vFindText(i), _ MatchCase:=True, _ Forward:=True, _ Wrap:=wdFindStop) = True orng.Select orng = vReplaceText(i) orng.Collapse wdCollapseEnd Loop End With Next End Sub
Ein Nachteil dieses Ansatzes besteht darin, dass „vorausgesetzt, dass“ am Anfang eines Absatzes nicht vorkommt. Das Makro könnte geändert werden, um solche Instanzen zu berücksichtigen, aber es wäre komplexer.
Es gibt jedoch einen anderen Ansatz, den Sie verwenden können. Dieser basiert auf einer ziemlich esoterischen Einstellung für die Case-Eigenschaft: wdTitleSentence. Diese Einstellung ändert alle Zeichen (mit einer bemerkenswerten Ausnahme) in Kleinbuchstaben. Wenn sich die Phrase am Anfang eines Satzes befindet, wird das erste Zeichen in Großbuchstaben geändert. So können Sie es in einem Makro verwenden:
Sub ChangeCase2() With Selection.Find .ClearFormatting .Wrap = wdFindContinue .Forward = True .Format = True .MatchCase = False .MatchWildcards = False .Text = "provided that" .Execute While .Found Selection.Range.Case = wdLowerCase Selection.Range.Case = wdTitleSentence Selection.Collapse Direction:=wdCollapseEnd .Execute Wend End With End Sub
Beachten Sie, dass innerhalb der While-Schleife der Case-Eigenschaft zwei Zuweisungen vorgenommen wurden. Der erste setzt die Auswahl (was gefunden wurde) auf Kleinbuchstaben und der zweite auf Titel für einen Satz. Die Kleinbuchstabeneinstellung wurde speziell für die Behandlung der „einen bemerkenswerten Ausnahme“
festgelegt Ich erwähnte: Wenn der Text „BEREITGESTELLT, dass“ am Anfang eines Satzes steht, ändert die Einstellung „wdTitleSentence“ ihn aus irgendeinem Grund nicht in „Vorausgesetzt, dass“. Es wird jedoch „vorausgesetzt, dass“ (was „vorausgesetzt, dass“ wird, nachdem es auf Kleinbuchstaben gesetzt wurde) ohne Probleme in „Vorausgesetzt, dass“ geändert.
_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 beliebteste Textverarbeitungssoftware der Welt.) Dieser Tipp (13398) gilt für Microsoft Word 2007, 2010 und 2013.