2010-04-20 129 views
1

我正在MS Word中編寫一個宏,它應該在文檔中查找所有突出顯示的文本並對每個文本執行一些操作。我正在計劃一個循環來執行搜索和操作部分,並且這部分代碼沒有問題。
但我不知道如何找到我需要的迭代次數。有沒有辦法確定VBA中的高亮數量?
非常感謝提前。如何查找MS Word文檔中突出顯示的文本塊的數量

回答

2
With ActiveDocument.Range.Find 
    .Highlight = True 
    While .Execute 
    Debug.Print .Parent.Text 
    Wend 
End With 

沒有必要預先計算匹配的數量。您可以在循環中執行搜索,一旦沒有更多匹配,它就會停止。

請確保您將搜索應用到文檔的右側部分。我使用ActiveDocument.Range,但任何Range對象都會執行此操作。也許更具體的更適合你的情況。

此外,檢查出的Find對象的許多其他屬性,並將其設置爲合理值,這比用默認值會(沒有人會記得所有選項都默認,加上Find對象可能已經設好了通過一些較早的搜索)。

+0

謝謝你的男人。它像奇蹟一樣工作。但是,如果它不要求太多,你是否也可以暗示是否可以找到數字?在進入循環之前,您會看到宏執行其他編輯,它將是一個很好的功能,可以檢查文檔是否已經被處理,所以如果用戶調用宏兩次,它會檢測到它已經被執行一次並退出。如果我可以找到高光數量,這將工作,因爲宏從大塊中刪除高亮標記,並在完成後沒有剩餘。 – 2010-04-20 19:43:59

+0

@Majid:如果在第一遍之後沒有高亮,那麼循環甚至不會在第二次嘗試中運行,因爲沒有高亮(即Execute()立即返回False)。 ;)或者,也許我不明白你想要什麼? – Tomalak 2010-04-20 21:03:47

+0

是的,循環內的代碼不會在第二次執行時運行,但是我會在循環之前執行代碼。這就是爲什麼我需要檢查文檔中是否有亮點。我會把這個檢查作爲宏的第一件事。如果沒有辦法直接訪問這個數字,我想,我需要兩個嵌套的while循環? – 2010-04-21 09:29:19

相關問題