0

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
4

1 に答える 1

0

このコードを試してみたところ、ドキュメントにテーブルがないにもかかわらず、無限ループが発生しました。問題は、使用するwhileループ条件が、単語ドキュメントの線形検索用に構築されていることと、スタイルが線形に検索されるのではなく、ある種のコレクションデータ構造を介して繰り返されることだと思います。

于 2012-04-24T19:34:32.097 に答える