运行时错误 9 - 下标超出范围错误或运行时 1004 - 尝试为单元格着色时方法"对象范围"工作表失败



我有一个vba代码,用于根据单元格的值突出显示单元格,即如果单元格为空。该代码正确识别单元格值,但不会给单元格上色。我一直收到运行时错误9-下标超出范围错误或运行时1004-方法"对象范围"工作表失败。我已经完成了其他搜索,似乎找不到解决方案。我可以清楚地看到,我所指向的细胞是存在的。我甚至用那个单元格的消息框做了一个测试,它显示了它的存在。

以下是代码。只要满足if语句,我就会得到运行时错误:

For Each ws In ThisWorkbook.Worksheets
If ws.Name = "raw data" Or ws.Name = "HP dealer permits" Or ws.Name = "HP harvester permits" Then
'do nothing
Else
lastrow2 = ws.Range("B" & Rows.Count).End(xlUp).Row 
For i = 2 To lastrow2

If ws.Range("D" & i).Value = "no match" Then ws.Range(ws.Cells(i, 2), _
ws.Cells(i, 4)).Interior.ColorIndex = 3
If ws.Range("E" & i).Value = "#NA" Then ws.Range(ws.Cells(i, 5)).Interior.ColorIndex = 3
If ws.Range("J" & i).Value = "No" Then ws.Range(ws.Cells(i, 8), _
ws.Cells(i, 11)).Interior.ColorIndex = 3
If IsEmpty(ws.Range("L" & i)) = True Then ws.Range(ws.Cells(i, 12)).Interior.ColorIndex = 3
If IsEmpty(ws.Range("N" & i)) = True Then ws.Range(ws.Cells(i, 14)).Interior.ColorIndex = 3
Next i
Next ws
End sub

谨致问候,格伦

问题是在引用一个单元格时使用范围,以及使用vbRed,它似乎无法为单元格着色。

我以前曾尝试过删除"ws.range",但仍然出现运行时错误9-出现下标超出范围错误。尽管我现在相信这是因为vbRed语句导致了运行时错误9。当我认为"3"不起作用时,我试用了vbRed。我从https://p2p.wrox.com/excel-vba/72653-background-color-range-cells.html以及为在代码中使用vbRed和vbWhite语句的一系列单元格着色(VBA(。

当只引用一个单元格,并且只使用颜色索引的数字时,我删除了ws-Range。现在看来这是可行的。