Simao hat einige Makros, die viel suchen und ersetzen. Wenn die Makros fertig sind, möchte er jedoch die Suche wiederherstellen und die Parameter durch die Parameter ersetzen, die unmittelbar vor dem Ausführen der Makros gültig sind. Also fragt sich Simao, wo er alle Eigenschaften zum Suchen und Ersetzen finden kann, damit er sie am Anfang jedes Makros speichern und am Ende wiederherstellen kann.

Wie Simao anspielt, besteht „gute Praxis“ darin, dass Ihr Makro alles, was es ändert, in den Zustand zurückgibt, in dem es sich befand, bevor das Makro ausgeführt wurde.

Auf diese Weise bringt Ihr Makro nichts anderes durcheinander, was der Benutzer möglicherweise tut.

Die Idee bei der Implementierung dieser Praxis ist, die folgenden Schritte zu befolgen:

  1. Finden Sie heraus, was Ihr Makro ändern wird. Erstellen Sie Variablen, in denen alle Eigenschaften gespeichert werden, die geändert werden sollen. Speichern Sie die Eigenschaften in den von Ihnen erstellten Variablen. Machen Sie Ihre Arbeit . Stellen Sie diese Eigenschaften aus den Variablen wieder her, die Sie zuvor in Schritt 3 festgelegt haben

Der Schlüssel hier ist Schritt 1. Wenn Sie nicht herausfinden können, was Ihr Makro ändern wird, können Sie nicht mit den anderen Schritten fortfahren. Bei Such- und Ersetzungsvorgängen können eine Reihe von Objekten beteiligt sein, von denen jedes eine gute Anzahl von Eigenschaften aufweist.

Eine einfache Möglichkeit, dies herauszufinden, besteht darin, einfach ein Makro aufzuzeichnen, das die Such- und Ersetzungsoperation ausführt, und dann den vom Rekorder erzeugten Code zu betrachten. Zum Beispiel habe ich die Suche nach dem Wort „the“

aufgezeichnet und durch das Wort „THE“ ersetzen. Als ich den Makrorecorder stoppte und mir ansah, was er erstellt hatte, war dies der relevante Teil dessen, was ich sah:

Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find     .Text = "the"

.Replacement.Text = "THE"

.Forward = True     .Wrap = wdFindContinue     .Format = False     .MatchCase = True     .MatchWholeWord = False     .MatchWildcards = False     .MatchSoundsLike = False     .MatchAllWordForms = False End With

Ich werde gleich auf die ersten beiden Zeilen dieses Codes zurückkommen, aber alle anderen produzierten Zeilen betrachten. Mit dem .Find-Objekt wird eine ganze Reihe von Eigenschaften angegeben. Dies sind Eigenschaften, die den Einstellungen im Dialogfeld Suchen und Ersetzen entsprechen. Sie haben jetzt mindestens eine Liste von Variablen, die Sie definieren müssen, damit Sie die Einstellungen jeder dieser Eigenschaften speichern und später wiederherstellen können.

Nun zurück zu den ersten beiden Zeilen des Codes. Sie repräsentieren die Hauptfliege in der Salbe. Die .ClearFormatting-Methode entfernt alle Formatierungen, die für den Vorgang Suchen und Ersetzen definiert wurden. Um zu sehen, welche Eigenschaften betroffen sind, wenn ich die Formatierung in Suchen und Ersetzen definiere, habe ich erneut ein Makro derselben Such- und Ersetzungsoperation aufgezeichnet, diesmal jedoch angegeben, dass der Ersetzungstext fett und unterstrichen sein soll. Alles, was der Rekorder aufzeichnete, war dasselbe, mit Ausnahme von vier Codezeilen, die direkt nach der oben gezeigten zweiten Zeile hinzugefügt wurden:

With Selection.Find.Replacement.Font     .Bold = True     .Underline = wdUnderlineSingle End With

Dies sind die Zeilen, die die Formatierung angeben, die ich beim Ersetzen verwenden wollte. Im vorherigen Code zeigt der Makrorecorder alle Eigenschaften des .Find-Objekts an. In diesem Fall wird nur aufgezeichnet, was ich ändere, was sich zufällig im .Font-Objekt befindet. Es gibt leider noch andere Objekte, die neben dem .Font-Objekt angegeben werden können -. Paragraph, .Tabs, .Language und so weiter und so fort. Außerdem können diese nicht nur für das .Find-Objekt, sondern auch für das .Replacement-Objekt festgelegt werden. Das ist das Potenzial von Hunderten von Immobilien, die gespeichert und wiederhergestellt werden müssen.

Sound unmöglich? Wahrscheinlich nicht unmöglich, aber es ist definitiv entmutigend. Mit der Methode zum Aufzeichnen von Makros müssten Sie suchen (oder ersetzen; die Konzepte sind dieselben) und die Formatierung aller möglichen Formatierungseigenschaften ändern, die gefunden oder ersetzt werden könnten.

Wenn Ihnen das gelingt, haben Sie am Ende die ganze Liste.

Hier ist zum Beispiel der Code, der für das Selection.Find.Font-Objekt generiert wurde:

With Selection.Find.Font     .Size = 14     .Bold = True     .Underline = wdUnderlineSingle     .StrikeThrough = True     .DoubleStrikeThrough = False     .Hidden = True     .SmallCaps = True     .AllCaps = False     .Color = wdColorRed     .Superscript = True     .Subscript = False End With

Mit anderen Worten, 11 verschiedene Eigenschaften zum Speichern und Zurücksetzen. Aber warte!

Es gibt mehr! (Klingt wie ein Werbespot für ein Ginsu-Messer, oder?) Ich habe auf der Registerkarte Erweitert des Dialogfelds Schriftart suchen keine Änderungen vorgenommen, wodurch diese Liste zweifellos erweitert worden wäre. Sie können sich ein Bild von der Gesamtzahl der Eigenschaften für das .Font-Objekt machen, indem Sie in den Microsoft-Dokumenten nach den Eigenschaften dieses Objekts suchen. (Stellen Sie sicher, dass Sie den Link Eigenschaften für das .Font-Objekt mithilfe der Dropdown-Liste links auf der Seite erweitern.)

https://docs.microsoft.com/en-us/office/vba/api/word.font

Dort sehen Sie über 50 Immobilien. Denken Sie daran, dass es ein separates .Font-Objekt gibt, das zum .Replacement-Objekt gehört, und dass es ähnliche gepaarte Objekte für andere Formatierungselemente gibt (.Paragraph, .Tabs usw. usw.).

Auf jeden Fall entmutigend.

Sobald Sie wissen, wie viele Eigenschaften betroffen sind, wenn Sie einen Such- und Ersetzungsvorgang ausführen, werden Sie verstehen, warum viele Benutzer auf das Speichern und Wiederherstellen von Formatierungseinstellungen für die Vorgänge verzichten. Es ist machbar; Es ist jedoch kein kleines Unterfangen.

_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 (13762) gilt für Microsoft Word 2007, 2010, 2013, 2016, 2019 und Word in Office 365.