使用VBA更改Word文档表字符串中单个单词的颜色以匹配单元格颜色

时间:2019-06-04 18:14:50

标签: vba ms-word

我有Word文档,其中的表具有颜色编码的单元格,我想通过更改其颜色以使其与单元格颜色匹配来“隐藏”每个单元格的某些单词。

我有一个VBA脚本,可以从数组列表中搜索单词并成功找到它们,但是我无法获取这些单词来将颜色更改为单元格背景颜色。

#define SET_SOME_BITS(Var, StartBitNumber, NumberOfBits, Value2Set) ((Var) & ~(((1<<(NumberOfBits))-1)<<(StartBitNumber)) | (Value2Set)<<(StartBitNumber))

我的期望是,在任何单元格中找到该单词时,代码的.Replacement部分会将单词颜色更改为backColor变量值,但文本颜色不会更改。

1 个答案:

答案 0 :(得分:0)

我认为您面临的问题是您的单元格颜色未设置为任何颜色,并且使用默认颜色-16777216(与wdColorAutomatic相同),您正在设置自动颜色以及您的文字(通常为黑色)。

如果单元格背景始终为白色,则可以执行.Font.Color = wdColorWhite,否则可以检查默认值,即:

...
        backColor = C.Shading.BackgroundPatternColor  'the color I want to change the found text to
        If backColor = -16777216 Then backColor = wdColorWhite
...

否则,如果在背景上设置了任何颜色,它将使用该颜色。