VBA设置RGB值时触发Excel Error 5报错的问题咨询
VBA修改RGB参数报错的原因与解决方案
核心报错原因
- 代码执行顺序错误:当前代码中
.Solid方法的位置在ForeColor.RGB赋值之后,.Solid用于将填充格式切换为纯色填充,调用时会重置填充关联属性,部分Office版本中在该方法前设置RGB值会触发参数校验异常,正确顺序是先调用.Solid再设置颜色。 - 内置
RGB函数被覆盖:检查所有模块中是否存在名为RGB的自定义变量、常量或函数,如果存在你调用的RGB()就不是VBA内置的颜色函数,会出现参数不匹配报错,可临时改为VBA.RGB()指定调用内置函数验证。 - 参数类型不符合要求:如果你传入RGB函数的参数是计算得到的浮点数,未转为整数,也会触发参数非法报错,可使用
CInt()函数对参数做强制类型转换后再传入。 - 小概率场景:目标形状处于锁定状态、或属于未解散的嵌套群组,也会触发属性赋值异常。
修正后代码
Sub Change_Colour_1() ' 无需选中形状直接操作,避免选中状态异常导致的报错 With ActiveSheet.Shapes("Rectangle 1").Fill .Visible = msoTrue .Solid ' 先切换为纯色填充,再设置颜色参数 .ForeColor.RGB = RGB(100, 50, 80) ' 此处G、B参数设为0-255范围内的非0值可正常运行 .Transparency = 0 End With End Sub
内容的提问来源于stack exchange,提问作者sgb1960
相关产品推荐
相关产品推荐

