使用Cells对象的Interior.ColorIndex设置填充色时触发运行时错误9的原因
VBA下标越界错误原因及解决方法
- 错误根源:你用
vbRed给Interior.ColorIndex赋值,但vbRed是RGB颜色常量(值为255),而ColorIndex只接受1-56范围内的颜色索引值,255不在这个合法区间,所以触发「下标越界」错误。 - 为什么字体设置没问题?注释里的
Font.Color可以直接用vbRed,因为Font.Color支持RGB颜色值,和Interior.ColorIndex的参数规则完全不同。
两种修正方案
方案1:改用Color属性(推荐,更直观)
把出错的代码行替换成:
Cells(i, 1).Interior.Color = vbRed
方案2:使用红色对应的ColorIndex值
红色的ColorIndex索引是3,代码改成:
Cells(i, 1).Interior.ColorIndex = 3
额外优化建议
原代码循环到Rows.Count会遍历整张工作表的1048576行,效率极低。建议先获取A列最后一行有数据的行号,再缩小循环范围:
Dim i As Long, LastRow As Long LastRow = Cells(Rows.Count, 1).End(xlUp).Row ' 获取A列最后一行数据的行号 Columns(1).Interior.ColorIndex = 2 For i = 1 To LastRow If Cells(i, 1).Value < Range("E2").Value And Not IsEmpty(Cells(i, 1).Value) Then Cells(i, 1).Interior.Color = vbRed End If Next i
内容的提问来源于stack exchange,提问作者Buddhi
相关产品推荐
相关产品推荐

