VBA 有效的 RGB 值抛出超出范围异常

VBA valid RGB value throws out of range exception

我从解决了类似问题的其他 Whosebug 文章中拼凑了以下代码。

Dim light As MsoRGBType, dark As MsoRGBType
light = RGB(195, 214, 155)
dark = RGB(79, 98, 40)

ws.Shapes("Arrow1").Fill.ForeColor.RGB = dark

在最后一行代码中,我得到错误:

Runtime Error '-2147024809 (80070057)': The value is out of range.

获取形状不会抛出错误,我检查过了。我无法确定 Excel 设置形状颜色的原生方式,因为奇怪的是,记录手动更改过程会产生一个空宏。

我正在使用的形状是带有箭头式端点的标准线,以防与着色过程相关。

即使 Excel 将标准线识别为 Shape 对象,Shape 的某些属性对于线来说是不可访问的。

由于线条不属于具有边框和内容的形状,因此不计算填充。使用 Shape.Line 会产生所需的结果。


在代码中:

ws.Shapes("Arrow1").Line.ForeColor.RGB = dark

感谢 user3964075 的启发性评论!