在MS*Word*VBA中循环遍历非连续选择的部分



我在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提供的有用链接。希望以上内容能帮助其他只想更改字体属性的人,而不必在所选范围的单独部分中循环。

相关内容

  • 没有找到相关文章

最新更新