当A列中的值更改时,VBA代码更改行颜色

时间:2010-11-23 15:33:01

标签: colors excel-vba row vba excel

我的电子表格设置如下:

我在A列中有一个作业编号列表,在B列中有一个相应的职位列表。我需要为某个作业编号的所有行着色。例如,行2-4在A列中具有“3705”,因此这些行将被涂成红色。第5行和第5行6列A中有4169,颜色为绿色。第7-10行在A列中有5518并且将着红色(在红色和绿色之间交替)。

有人可以给我一个VBA代码,它会自动执行上面描述的/使用宏吗?

谢谢!

2 个答案:

答案 0 :(得分:3)

Sub colorize()

Dim r As Long, val As Long, c As Long

    r = 1
    val = ActiveSheet.Cells(r, 1).Value
    c = 4 '4 is green, 3 is red '

    For r = 1 To ActiveSheet.Rows.Count
        If IsEmpty(ActiveSheet.Cells(r, 1).Value) Then
            Exit For
        End If

        If ActiveSheet.Cells(r, 1).Value <> val Then
            If c = 3 Then
                c = 4
            Else
                c = 3
            End If
        End If

        ActiveSheet.Rows(r).Select
        With Selection.Interior
            .ColorIndex = c
            .Pattern = xlSolid
        End With

        val = ActiveSheet.Cells(r, 1).Value
    Next

End Sub

如果您希望每次A列中的单元格更改值时都触发宏,请将以下内容添加到相关的工作表模块中:

Private Sub Worksheet_Change(ByVal Target As Range)

    If Intersect(Target, Range("A:A")) Is Nothing Then
        Exit Sub
    End If

    colorize

End Sub

答案 1 :(得分:2)

如果您可以添加列,则只能使用Excel公式和条件格式来完成此操作。您可能无法替换红色/绿色,但只能使用颜色而不是颜色。

Alternate Excel Row Color Based on Content