2013-08-02 104 views
0

因此,我正在嘗試處理Word文檔,並簡單地加粗所有特定術語。問題是,當我在測試段落上運行以下代碼並且出現7次搜索詞時,只有其中兩個變爲粗體。我用段落中的不同詞語嘗試過,它似乎總是佔實際數量的四分之一左右。一個有趣的特徵,我不能確定是普遍的,但似乎是這樣的,第一項總是跳過,它大膽的一個事件,跳過兩個,得到一個,等等。我也嘗試改變周圍找不到的選項。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的回答絕對正確,我只想指出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 

*免責聲明碼。