[英]VBA to color row based on other column values
我正在尝试根据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屏幕打印:
尝试这个:
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
我认为问题出在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步从第一行转到第二行。 这是不可能的。
更改单元格引用,使其看起来像这样(B列示例):
Cells(i, 2)
如果要使用Range()
,则可以按照您尝试过的样式进行操作,但是需要将这些值连接到“ A1”样式单元格引用中,如下所示:
Range("B" & i)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.