繁体   English   中英

VBA根据其他列值为行着色

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM