2016-04-04 81 views
1

部件我有一個宏在MS Word 2013 VBA(的Excel),該切換所選擇的文本的高亮顏色。代碼如下所示 這樣:循環通過非連續選擇的在MS Word中* * VBA

If Selection.Range.HighlightColorIndex = WhtColor Then Selection.Range.HighlightColorIndex = wdNoHighlight Else Selection.Range.HighlightColorIndex = WhtColor 

,對於連續/連續選擇的偉大工程。但是,如果我在Word表格中選擇了4個不連續的行(比如5,12行, 15和19),則宏只會高亮顯示所選的最後一行。

如何獲得HighlightColorIndex應用到 一系列不相鄰的所有「零件」,或者,我怎麼通過不同的「零件」循環範圍的 並應用HighlightColorIndex每個部件?

+0

https://support.microsoft.com/en-us/kb/288424 - 不知道如何最新這是 –

+0

這解決了這個問題。但是,考慮到代碼的實際目標是什麼,這個問題並不重複。由於@Tim Williams提供的鏈接中的信息,我已經使用該解決方案更新了上述問題。 – DRC

+0

抱歉 - 我在發佈之前沒有完全閱讀鏈接的頁面。我重新打開你的問題,所以你現在應該能夠回答它... –

回答

2

蒂姆·威廉斯指向的網頁(support.microsoft.com/en-us/kb/288424)給出了關於這是如何可能的線索。但是,該鏈接確實表明不能通過非連續選擇進行循環。

儘管如此,該鏈接還顯示的是字體格式可以爲設置爲非連續選擇,但不適用於範圍對象。

這裏是修改後的代碼確實工作爲一個非連續的選擇:

If Selection.Font.Shading.BackgroundPatternColor = WhtColor Then Selection.Font.Shading.BackgroundPatternColor = wdColorAutomatic Else Selection.Font.Shading.BackgroundPatternColor = WhtColor 

該代碼將改變背景顏色來選擇的目標顏色(雖然我不得不改變從顏色代碼Wd常量WdColor常量)。

這種方法唯一的缺點是,我不知道一種方法來搜索文本的背景顏色已被更改,而您可以搜索突出顯示的文本。

無論如何,謝謝@Tim Williams的幫助鏈接。希望以上內容可以幫助其他人改變字體屬性,並且實際上不必循環選擇範圍的單獨部分。

+0

好的發現@DRC在這裏使用它:https://stackoverflow.com/a/46106637/3451115(可悲的是,MS的鏈接現在已經死了) – SlowLearner

+0

@SlowLearner - 在該帖子中巧妙運用這個主意。尼斯。 – DRC