【发布时间】:2015-01-26 05:26:32
【问题描述】:
我有一个在 Excel 2007 中创建的宏,它让值取决于源文件的字体颜色,如下所示(这段代码是循环的一部分):
If Worksheets("Source1").Cells(i, j).Font.Color = RGB(165, 165, 165) Or Worksheets("Source1").Cells(i, j).Font.Color = RGB(117, 146, 60) Then
Worksheets("Result").Cells(UnusedRow, 15).Value = "Closed"
Else
Worksheets("Result").Cells(UnusedRow, 15).Value = "Active"
End If
这没有问题。
然而,奇怪的是,same 源文件中的 same 单元格在 使用 Excel 2013 打开时具有不同的 RGB 值:RGB(165, 2007年的165, 165) 2013年变成RGB(166, 166, 166),2007年的RGB(117, 146, 60)变成2013年的RGB(118, 147, 60)。
这就是为什么我想为字体颜色中的每个数字使用一个小范围,例如源文件中的 RGB(x, y, z):
If x => 164 And x <= 167 And y => 164 And y <= 167 And z => 164 And z <= 167 Then
...
谁能告诉我如何正确编码?谢谢!
【问题讨论】:
-
如果我们谈论逻辑,Excel 不应该首先更改 RGB 值。这不是映射,而是在 RGB(x,y,z) 中定义 x、y 和 z 的范围。我只需要将接近 RGB(165,165,165) 和 RGB(117,146,60) 的任何 RGB 值连接到“已关闭”状态,因此它实际上会很快停止。
-
FWIW,我无法重现您的问题。此外,我在其他地方找不到任何提及。您是否将其简化为一个非常简单的测试,例如,在 Excel 2007 中使用
ActiveCell.Font.Color = RGB(165, 165, 165)和 Excel 2013 中的Debug.Print ActiveCell.Font.Color = RGB(165, 165, 165)设置值?在这两种情况下,这样做都会在 2013 年的即时窗口中为我带来True。 -
我刚刚注意到您的帖子标题指的是
ColorIndex。你的代码没有引用它,我可以看到。这两者当然是不相容的。它们不会导致您看到的差异,所以我猜这只是一个错字? -
问题是我无法控制源文件,所以我无法自己设置值。在源文件中,用户通过单击 Excel 的调色板来设置字体的颜色索引(没有 VBA 的手动)。将其保存在 Excel 2007 中并在 Excel 2013 中打开会导致不同的 RGB 值。
-
我去了网站,但我很偏执所以没有打开。但是,如果我在 Excel 2007 中创建一个并在 Excel 2013 中打开,我看不到您在描述什么。鉴于相当特殊的问题,我只需使用 OR 语句检查特定值。如果您确定它是基于版本的,您可以检查正在运行的 Excel 版本(互联网搜索会找到)。祝你好运!顺便说一句,在其中一个 cmets 中将“@”放在用户名的开头会向我们发送通知,告诉我们您向我们提出了一些问题。