0

我习惯于从以下代码中选择特定Selection.Extend文本:StartEnd

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内部StartEnd

4

2 回答 2

2

我刚刚测试,你.WrapwdFindStop。光标位于查找的末尾,您正在查找.Forward = True. 既然你在尽头,一直寻找到停止,它就不会找到它。

测试文本为:

开始 ABCD 结束

更改后我让它工作:

.Forward = True

.Forward = False

在你Selection.Find"ABCD"

编辑:

然后

If Selection.Find.Found = True Then
    Selection.Collapse wdCollapseEnd
    Selection.Expand wdWord
Else
    MsgBox("Not Found")
End If
于 2016-04-27T16:13:57.607 回答
1

我认为对于 Selection.Extend 的实际作用存在一些误解,您可能需要在语言参考中阅读它。它模拟 UI 中的键盘命令,通过预定义的“跳转”扩展当前选择。

根据您的描述,我了解到您希望找到文档中的第一个搜索词(“开始”)。如果存在,则在文档末尾搜索第二个搜索词(“End”)。如果也找到了,请在这两个词之间搜索第三个搜索词。

最好使用三个范围来完成,每个搜索词一个。像这样的东西:

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
于 2016-04-27T17:00:41.533 回答