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