思茅有一些宏,它们进行了大量的搜索和替换。但是,当宏结束时,他想恢复搜索并将参数替换为运行宏之前有效的参数。因此,思茅想知道在哪里可以找到所有要搜索和替换的属性,以便他可以在每个宏的开头保存它们,然后在结尾处还原它们。

正如Simao所暗示的那样,“好的做法”是让您的宏将其更改后的任何内容返回到运行宏之前所处的状态。

这样,您的宏就不会弄乱用户可能正在做的其他事情。

实施此实践的想法是遵循以下步骤:

。弄清楚您的宏将会改变什么。创建变量以存储将要更改的所有属性。将属性存储在您创建的变量中。做你的工作 。从您先前在步骤3中设置的变量恢复这些属性

|此处的关键是步骤1。如果您无法弄清宏将要更改的内容,则无法继续执行其他步骤。通过执行查找和替换操作,可以涉及许多对象,并且每个对象都有很多属性。

解决问题的一种简单方法是简单地记录执行“查找和替换”操作的宏,然后查看记录器产生的代码。例如,我记录了搜索单词“ the”的

并以“ THE”代替。当我停止宏记录器并查看它创建的内容时,这是我所看到的相关部分:

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

稍后,我将回到本代码的前两行,但请看一下产生的所有其他行。使用.Find对象,可以指定整个属性。这些是与“查找和替换”对话框中的设置相对应的属性。因此,您现在至少需要定义一个变量列表,以便您可以保存每个属性的设置并在以后还原它们。

现在回到代码的前两行;它们代表了药膏中的主要果蝇。 .ClearFormatting方法摆脱了为“查找和替换”操作定义的任何格式。为了查看如果在“查找和替换”中定义格式会影响哪些属性,我再次记录了相同“查找和替换”操作的宏,但是这次指定了替换文本应为粗体并带有下划线。记录器记录的所有内容都是相同的,只是在上面第二行之后添加了四个代码行:

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

这些行指定了我要在替换中使用的格式。在早期的代码中,宏记录器显示.Find对象的所有属性。在这种情况下,记录的唯一内容就是我要更改的内容,恰好在.Font对象中。不幸的是,除了.Font对象之外,还可以指定其他对象-.Paragraph,.Tabs,.Language等。另外,不仅可以为.Find对象设置这些,而且还可以为.Replacement对象设置这些。那就是需要存储和恢复数百个属性的潜力。

听起来不可能?可能并非不可能,但这绝对令人生畏。使用记录宏的方法,您需要进行查找(或替换;概念相同),并更改可以找到或替换的每个可能的格式化属性的格式。

如果成功完成此操作,您将获得大量清单。

例如,这里是为Selection.Find.Font对象生成的代码:

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

换句话说,有11种不同的属性可以保存和重置。可是等等!

还有更多! (听起来像Ginsu刀广告,对吗?)我没有在“查找字体”对话框的“高级”选项卡上进行任何更改,这无疑会扩展此列表。通过查看该对象的属性的Microsoft文档,您可以了解.Font对象的属性总数。 (确保使用页面左侧的下拉列表扩展.Font对象的“属性”链接。)

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

您会在那看到50多个属性。并且,请记住,有一个单独的.Font对象属于.Replacement对象,并且对于其他格式元素(.Paragraph,.Tabs等)也有类似的成对对象。

绝对令人生畏。

了解了执行“查找和替换”操作后会影响多少个属性后,您就会开始理解为什么许多人放弃保存和恢复该操作的格式设置。这是可行的;但是,这并非小事。

注意:

如果您想知道如何使用此页面(或_WordTips_网站上的任何其他页面)中描述的宏,我准备了一个包含有用信息的特殊页面。

_WordTips_是您进行经济有效的Microsoft Word培训的来源。

(Microsoft Word是世界上最流行的文字处理软件。)本技巧(13762)适用于Microsoft Word 2007、2010、2013、2016、2019和Office 365中的Word。