2012-04-05 6 views
0

Word文書でスタイルを検索すると、最初のオカレンスだけを見つけた後にスタイルの検索がハングアップし、無限ループに入ることがあります。これは、たとえ同じセルに後で出現したとしても、主にテーブル内で発生します。テキストを検索するときは決してありません。それはバグですか?それはどのように回避されますか?スタイルを使用して検索中にMicrosoft 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

私のドキュメントにはテーブルがなくても、このコードを試して無限ループに終わった。問題は、あなたが使っているwhileループ条件がword文書の線形検索のために構築されていて、そのスタイルが直線的な方法では検索されず、コレクションデータ構造のある種の型を通して反復されるということです。

+0

破損したリンクのリスト?それはいくつかのことを説明しますが、これを回避するにはどうすればいいですか? – ForEachLoop

関連する問題