2

我习惯于使用 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
4

1 回答 1

5

在我看来,您只需要更改一行:

.Wrap = wdFindContinue

进入这个:

.Wrap = wdFindStop

但请记住,如果没有选择任何内容(单个光标闪烁),那么您的代码将针对整个文档运行。为避免这种情况,您可以尝试 Mehow 解决方案(不确定它是否有效),也可以if statement在开头添加简单:

If Selection.Range.Start = Selection.Range.End Then
    MsgBox "Select something, please!"
    Exit Sub
End If
于 2013-11-11T09:54:41.240 回答