2013-08-02 2 views
0

Так что я пытаюсь обработать документ Word и просто смел весь конкретный термин. Проблема в том, что когда я запускаю следующий код в тестовом абзаце с 7 вхождениями в мой поисковый запрос, только два из них выделены полужирным шрифтом. Я пробовал это с разными словами в параграфе, и, похоже, он появляется примерно на четверть от фактического числа. Интересная особенность, которую я не могу подтвердить, чтобы быть универсальной, но, похоже, так это то, что первый термин всегда пропущен, он смел в одном случае, пропускает два, получает один и т. Д. Я также пытался изменить параметры поиска, но безрезультатно.VBA Find Loop Missing Occurances

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 абсолютно прав, я просто хотел указать, что есть свойство Find «Found», так что, если бы я заменил два вторых экземпляра «highRange.Find.Execute» на «highRange.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 

* код отказа от ответственности не проверен.