ActiveDocument.Tables(k).Range.Cells(j).Shading.BackgroundPatternColor返回-1

时间:2011-10-27 08:50:56

标签: vba colors ms-word ms-office

我有一个包含大量表格的Word 2007文档。每个表都有一些填充了2种自定义颜色的单元格。我创建了一个宏,它输入3个值来提供RGB功能,创建其中一种颜色,将颜色与每种颜色相匹配,然后用新颜色更改匹配。

我使用If语句,将填充单元格的颜色与RGB函数返回的颜色进行比较,并使用用户提供的输入函数。

If ActiveDocument.Tables(k).Range.Cells(j).Shading.BackgroundPatternColor = RGB(inputRed, inputGreen, inputBlue) Then
       'code
end if

当我查看文档以查看结果时,我注意到3个表格中的一些单元格留有旧颜色,显然宏观无法识别它。

在Word 2007中,我选择了应该更改颜色的单元格。我去了 Home - >阴影 - >更多颜色 - >自定义并看到3个值与用户输入的3个值完美匹配。

在盯着显示器30分钟后,我想去看医生检查眼睛。 :)

在此之前,我开始调试应用程序。在每个未更改的单元格上。检查此行:
ActiveDocument.Tables(k).Range.Cells(j).Shading.BackgroundPatternColor
我看到它返回 -1

我认为-1相当于null或nil,意味着单元格未填充,但如果是,为什么我能看到RGB值?或者系统可能无法读取RGB值,但究竟谁是这个系统?

您是否有一个明确解释Shading.BackgroundPatternColor方法的链接?

1 个答案:

答案 0 :(得分:1)

我不知道值为-1,但Word 2007中的颜色稍有变化,因此值不再是RGB值。我已就此发表了大量文章 - 请参阅http://www.wordarticles.com/Articles/Colours/2007.php