我已使用Selection.Extend
选择从Start
到End
的特定文字现在,文字可从以下代码中选择:
Selection.Find.ClearFormatting
With Selection.Find
.Text = "Start"
.Forward = True
.Wrap = wdFindStop
End With
Selection.Find.Execute
If Selection.Find.Found = False Then
Else
Selection.Extend
Selection.Find.ClearFormatting
With Selection.Find
.Text = "End"
.Forward = True
.Wrap = wdFindStop
End With
Selection.Find.Execute
End If
选择之后我想找到" ABCD"在选定的文本中通过以下代码:
Selection.Find.ClearFormatting
With Selection.Find
.Text = "ABCD"
.Forward = True
.Wrap = wdFindStop
End With
Selection.Find.Execute
If Selection.Find.Found = True Then
MsgBox ("Found")
Else
MsgBox ("Not Found")
End If
但不是找到它而是将选择范围扩展到ABCD
所在的位置。
所以我的问题是如何摆脱以前的选择以及selection.Find.Execute
ABCD
和Start
内的End
?
答案 0 :(得分:2)
我刚刚测试过,.Wrap
wdFindStop
是.Forward = True
。光标位于查找的末尾,您找到.Forward = True
。既然你在最后,直到停止,它将找不到它。
测试文本:
启动ABCD结束
改变之后我才开始工作:
.Forward = False
到
Selection.Find
"ABCD"
中的
修改强>
然后
If Selection.Find.Found = True Then
Selection.Collapse wdCollapseEnd
Selection.Expand wdWord
Else
MsgBox("Not Found")
End If
答案 1 :(得分:1)
我认为对于Selection.Extend实际上做了什么有一些误解,你可能想在语言参考中阅读它。它在UI中模拟键盘命令,通过预定义的"跳转"来扩展当前选择。
根据您的描述,我了解您要在文档中找到第一个搜索词("开始")。 如果存在,请在文档末尾搜索第二个搜索字词("结束")。如果找到了,则在第二个搜索词的两个术语之间进行搜索。
最好使用三个RANGES,每个搜索词一个。像这样:
Dim rngStart as Word.Range, rngEnd as Word.Range, rngTarget as Word.Range
Dim bFound as Boolean
Set rngStart = ActiveDocument.Content
bFound = rngStart.Find.Execute(FindText:="Start", Forward:=True, Wrap:=wdFindStop)
If bFound Then
Set rngEnd = rngStart.Duplicate
bFound = rngEnd.Find.Execute(FindText:="End", Forward:=True, Wrap:=wdFindStop)
If bFound Then
rngStart.End = rngEnd.End 'Extend first Found to include second Found
Set rngTarget = rngStart.Duplicate
bFound = rngTarget.Find.Execute(FindText:="ABCD", Forward:=True, Wrap:=wdFindStop)
If bFound Then
MsgBox "Found"
Else
MsgBox "Not found"
End If
End If
End If