我习惯于使用Selection.WholeStory,但现在有一个宏,我可以在其中进行大量的搜索和替换操作。我只希望在运行宏之前在用户选择的选择中搜索和替换模块。
我该怎么做?我尝试过 Selection.Text,但 Word 告诉我这是对 Text 属性的无效使用。
添加:我的模块是这样开始的
Sub Bibliography()
With ActiveDocument
.TrackRevisions = False
.PrintRevisions = False
.ShowRevisions = False
End With
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
通过不指定选择对象,我应该只获取用户在运行宏之前已经做出的选择。但这似乎行不通。例如,下面的代码更改了整个文档中的出现次数,而不仅仅是用户所做的选择
With Selection.Find
.Text = "%"
.Replacement.Text = " %"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
您只需要更改一行:
.Wrap = wdFindContinue
进入这个:
.Wrap = wdFindStop
但也请记住,如果未选择任何内容(单个光标闪烁),则代码将针对整个文档运行。为了避免这种情况,您可以尝试Mehow解决方案(不确定它是否有效),也可以在开始时添加简单的if statement
:
If Selection.Range.Start = Selection.Range.End Then
MsgBox "Select something, please!"
Exit Sub
End If