Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA有效RGB值抛出超出范围异常_Excel_Vba_Rgb_Shape_Outofrangeexception - Fatal编程技术网

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

Excel VBA有效RGB值抛出超出范围异常,excel,vba,rgb,shape,outofrangeexception,Excel,Vba,Rgb,Shape,Outofrangeexception,我从解决类似问题的其他StackOverflow文章中拼凑了以下代码 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

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

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.Line可以得到所需的结果

代码:

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

感谢user3964075提供的启发性评论

试试ws.ShapesArrow1.Line.ForeColor.RGB=dark成功了,谢谢!你可能应该允许@user3964075回答这个问题,并为此获得荣誉…@DavidZemens如果他选择这样做,我当然会收回我的答案。当时我认为,明智的做法是将解决方案保存在某个地方,以便在他不亲自编写的情况下,可以随时访问该解决方案。