使用样式查找时Microsoft Word挂起



在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

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

最新更新