Fan*_*Ban 2 vba ms-word word-vba
我习惯使用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
Run Code Online (Sandbox Code Playgroud)
通过不指定选择对象,我应该只获得用户在运行宏之前已经做出的选择.但这似乎不起作用.例如,下面的代码改变了整个文档中的出现次数,而不仅仅是用户做出的选择
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
Run Code Online (Sandbox Code Playgroud)
在我看来,你只需要换一行:
.Wrap = wdFindContinue
Run Code Online (Sandbox Code Playgroud)
进入这一个:
.Wrap = wdFindStop
Run Code Online (Sandbox Code Playgroud)
但请记住,如果没有选择任何内容(单个光标闪烁),则代码将针对整个文档运行.为了避免这样的事情你可以尝试Mehow解决方案(不确定它是否可行)或者你可以if statement在开头添加简单:
If Selection.Range.Start = Selection.Range.End Then
MsgBox "Select something, please!"
Exit Sub
End If
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3234 次 |
| 最近记录: |