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

时间:2016-04-04 16:11:24

标签: vba ms-word word-vba word-2013

  

我在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应用于每个部分?

1 个答案:

答案 0 :(得分:2)

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的有用链接。希望上面的内容可以帮助那些只想更改字体属性并且实际上不必遍历所选范围的各个部分的人。