VBA代码执行异常:使用RGB赋值Interior.ColorIndex时失效
问题分析与解决方案
嘿,这个问题我碰到过好多次啦——你把属性用错啦!
核心问题
你现在是把RGB()函数返回的颜色值赋值给了.Interior.ColorIndex,但这两个属性根本不是一回事:
.Interior.ColorIndex:对应Excel内置调色板的索引编号,只能接受1~56之间的整数(不同Excel版本范围可能略有差异),比如你之前用的3(红色)、2(绿色)都是合法的索引值。.Interior.Color:专门用来接收自定义RGB颜色值的属性,RGB(153,204,255)返回的长整型颜色代码,正是这个属性需要的参数。
修改后的代码
只需要把.Interior.ColorIndex改成.Interior.Color就可以正常运行了:
Sub Clearall() Dim Ws As Worksheet Set Ws = ThisWorkbook.Sheets("Sheet1") Dim Clrallblue As Range Set Clrallblue = Range("C14:I19") For Each Cell In Clrallblue.Cells With Cell .ClearContents .Borders.LineStyle = XlLineStyle.xlContinuous .Interior.Color = RGB(153, 204, 255) ' 这里把ColorIndex改成Color End With Next Cell End Sub
额外小提示
如果你确实想用ColorIndex来设置这个浅蓝色,也可以先手动在Excel里设置好一个单元格的颜色,然后用以下代码获取它的索引值:
Debug.Print Range("你设置好颜色的单元格").Interior.ColorIndex
不过直接用RGB()配合.Interior.Color显然更直观,不需要依赖内置调色板的限制。
内容的提问来源于stack exchange,提问作者Deb
相关产品推荐
相关产品推荐

