Microsoft Word在使用样式查找时挂起

时间:2012-04-05 15:58:41

标签: vba word-vba

在Word文档中搜索样式时,搜索样式有时会在仅查找第一个匹配项后挂起,并进入无限循环。这主要发生在表格中,即使稍后在同一单元格中出现。搜索文本时从未发生过这种情况。那是一个错误吗?它是如何解决的?

Public Sub FindOccurences()
    On Error GoTo MyErrorHandler


    Dim i As Long: i = 0
    Dim findRange As Range
    Set findRange = ActiveDocument.Range

    With findRange.Find
        findRange.Find.ClearFormatting

        'findRange.Find.Text = "the" 'Never hangs searching for text
        findRange.Find.Style = ActiveDocument.Styles("text.10")

        Do While .Execute(Forward:=True) = True
            findRange.HighlightColorIndex = wdTurquoise
            i = i + 1

            DoEvents
        Loop
    End With

    MsgBox "Done. Found times: " & i

    Exit Sub

MyErrorHandler:
    MsgBox "FindOccurences" & vbCrLf & vbCrLf & "Err = " & Err.Number & vbCrLf & "Description: " & Err.Description
End Sub

1 个答案:

答案 0 :(得分:0)

我尝试了这段代码并最终得到了一个无限循环,即使我的文档没有任何表格。我认为问题在于你使用的while循环条件是为单词文档的线性搜索而构造的,并且这些样式不是以线性方式搜索的,而是通过某种类型的集合数据结构进行迭代。