我在 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 应用于每个部分?
问问题
769 次
1 回答
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 提供的有用链接。希望以上内容可以帮助那些只想更改字体属性并且实际上不必遍历所选范围的单独部分的其他人。
于 2016-04-04T21:22:22.520 回答