2013-08-02 2 views
0

그래서 Word 문서를 처리하고 특정 용어를 모두 대담하게하려고합니다. 문제는 내 검색어가 7 번 나오는 테스트 단락에서 다음 코드를 실행할 때 두 개만 굵게 표시된다는 것입니다. 내가 단락에서 다른 단어로 그것을 시도하고 항상 실제 숫자의 약 4 분의 1을 설정하는 것 같습니다. 내가 보편적이라고 확신 할 수없는 흥미로운 특징은 첫 번째 용어는 항상 건너 뛴다는 것, 두 번 건너 뛰기, 하나를 얻는 것 등이다. 나는 또한 주위에 아무 소용이 발견 옵션을 변경 했어요.VBA 찾기 루프 누락 발생

Sub HighlightTerm() 

    Dim highRange As Range 
    Set highRange = ActiveDocument.Content 
    Do 
     With highRange.Find 
      .Text = "inflation" 
      .MatchWholeWord = True 
      .Execute 
     End With 

     If highRange.Find.Execute Then 
      highRange.Font.Bold = True 
     End If 
    Loop While highRange.Find.Execute 

End Sub 

이 문제를 해결하는 방법에 대한 도움이나 제안, 또는 내가 원하는 것을 달성하는 새로운 코드는 많은 도움이 될 것입니다.

+0

Nemmy의 대답은 절대적으로 정확합니다. "HighRange.Find.Execute"의 두 번째 두 인스턴스를 "highRange.Find.Found"로 바꾸면 Find 속성 "Found"가 있다는 것을 지적하고 싶었습니다. 그것은 올바르게 작동합니다. –

답변

1

나는 그것이 당신이 다른 검색을 할 때마다 highRange.Find.Execute 메서드를 실행할 것이기 때문에 그것이 의심 스럽다. 루프에서 세 번 실행한다는 것을 알았습니다. 아마도 다음과 같이 시도해야합니다.

Sub HighlightTerm() 

    Dim highRange As Range 
    Dim blnFound as boolean 
    Set highRange = ActiveDocument.Content 
    Do 
     With highRange.Find 
      .Text = "inflation" 
      .MatchWholeWord = True 
     End With 

     blnFound=highRange.Find.Execute 

     If blnFound Then 
      highRange.Font.Bold = True 
     End If 
    Loop While blnFound 

    End Sub 

* 면책 코드는 테스트되지 않았습니다.