我在MS Word 2013 VBA(而非Excel)中有一个宏,可以切换所选文本的突出显示颜色。代码看起来像这个:
If Selection.Range.HighlightColorIndex = WhtColor Then Selection.Range.HighlightColorIndex = wdNoHighlight Else Selection.Range.HighlightColorIndex = WhtColor
这对于连续/连续选择非常有效。但是,如果我例如,在Word表中选择4个不连续的行(例如,行5、12,15和19),则宏仅高亮显示最后一行。
如何将HighlightColorIndex应用于不连续的范围,或者,我如何循环通过不同的"部分"并将HighlightColorIndex应用于每个零件?
Tim Williams指向的网页(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提供的有用链接。希望以上内容能帮助其他只想更改字体属性的人,而不必在所选范围的单独部分中循环。