我正在尝试根据COL B,C,D的行颜色为A列中的每一行着色。
说A2颜色基于B2,C2,D2的颜色。如果它们中的任何一个为红色,则A2应为红色,否则A2为绿色
请在下面找到我的代码:
Option Explicit
Sub Sheet1()
Dim lastR As Long
Dim i As Long
lastR = Sheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Row
For i = lastR To 2 Step -1
If ((Sheets("Sheet1").Cells(i, "B")) Or (Sheets("Sheet1").Cells(i, "C")) Or (Sheets("Sheet1").Cells(i, "D"))) = Rows(i).Interior.Color = RGB(255, 0, 0) Then
Rows(i).Interior.Color = RGB(0, 255, 0)
End If
Next i
End Sub
我的下标超出范围,错误代码为9。
这是我的Excel屏幕打印:
答案 0 :(得分:0)
试试这个:
Sub Sheet1()
Dim rng As Range, cl As Range
For Each cl In Worksheets("Sheet1").Range("A2:A" & Cells(Rows.Count, "A").End(xlUp).Row)
If cl.Offset(0, 1).Interior.Color = 255 Or cl.Offset(0, 2).Interior.Color = 255 Or cl.Offset(0, 3).Interior.Color = 255 Then
cl.Interior.Color = 255
End If
Next cl
End Sub
答案 1 :(得分:0)
我认为问题出在lastR = Sheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Row
。
Sheets("Sheet1").Cells(Rows.Count, "A")
会找到最后一个单元格,然后.End(xlUp)
会将选择再次带到第一行。
当你说For i = lastR To 2 Step -1
时,你可能想要从第一行到第二行,步长为-1。这是不可能的。
答案 2 :(得分:-1)
将您的单元格引用更改为如下所示(B列的示例):
Cells(i, 2)
如果您使用Range()
,您可以使用您尝试过的样式进行操作,但是您需要将值连接到“A1”样式的单元格引用中,如下所示:
Range("B" & i)