我在 Excel 2003 中有一个用户窗体,其中包含一些 MSForms.Label 控件。我想设置每个控件的 .BackColor 属性,使它们与工作表上某些单个单元格的颜色相匹配。
为此,我正在读取这些单元格的 .Interior.Color 属性,将其转换为十六进制并使用该值来设置 Label 对象的 .BackColor 属性。
我的问题是来自 .Interior.Color 的值在第一次读取时几乎总是不正确。我通过在 VBA 编辑器即时窗口中运行以下命令对此进行了测试:
Print Hex([sourceCell].Interior.Color)
该命令在第一次几乎总是给出错误的值,但从第二次开始给出正确的值。如果我更改 [sourceCell] 的填充颜色并再次运行命令,它将执行相同的操作,即第一次错误值,第二次正确值。
有问题的单元格都填充了来自图表线条/填充颜色选择的颜色(即,您可以在 Excel 的“模式”选项卡下的“单元格格式”对话框中看到的底部两行)。我已经修改了这些颜色以提供一组自定义颜色,并且很明显,“错误”值似乎与 Excel 的自定义颜色选择范围的默认值相匹配(即,您在开始时获得的默认图表线/填充颜色)新工作簿)。
有没有其他人经历过这种行为/有解决方法?当我尝试在运行时读取两次值时它不起作用,即它没有切换到正确的值。必须停止代码并重新加载用户表单以强制输出“正确”值。