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

Colors 当列A中的值更改时更改行颜色的VBA代码,colors,excel,row,vba,Colors,Excel,Row,Vba,我的电子表格设置如下: 我在a列中有一个工作编号列表,在B列中有一个相应的工作名称列表。我需要对某个工作编号的所有行进行着色。e、 例如,第2-4行在A列中有“3705”,因此这些行将被涂成红色。第5行和第6行的A列中有4169行,将被涂成绿色。第7-10行在A列中有5518,颜色为红色(红色和绿色交替) 有人能给我一个VBA代码,它将自动/使用宏执行我上面描述的操作吗 谢谢 如果可以添加列,则只能使用Excel公式和条件格式完成此操作。您可能无法交替使用红色/绿色,但只能选择一种颜色,不能选择

我的电子表格设置如下:

我在a列中有一个工作编号列表,在B列中有一个相应的工作名称列表。我需要对某个工作编号的所有行进行着色。e、 例如,第2-4行在A列中有“3705”,因此这些行将被涂成红色。第5行和第6行的A列中有4169行,将被涂成绿色。第7-10行在A列中有5518,颜色为红色(红色和绿色交替)

有人能给我一个VBA代码,它将自动/使用宏执行我上面描述的操作吗


谢谢

如果可以添加列,则只能使用Excel公式和条件格式完成此操作。您可能无法交替使用红色/绿色,但只能选择一种颜色,不能选择任何颜色

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

使用DIM时,必须为每个变量指定变量类型。您使用的方法只会将c设置为整数。r和val均为变型。Vicky,当我试着运行你给我的顶级代码(长代码)时,它会说“运行时错误'13:类型不匹配”,这是不是因为残余所说的?如果是这样,我该如何修复它?另外,当我尝试运行您给我的第二个代码(短代码)时,它并没有作为运行选项出现(相反,它显示了我录制的其他一些宏)。对不起,我不熟悉VBA代码等。。非常感谢你的帮助!嗨@Colton,@rement编辑了我的帖子来纠正那些“模糊”的陈述,所以如果你按照答案中出现的那样使用它,那就好了。您的运行时错误可能与ActiveSheet相关-运行时需要选择相关工作表(即作为活动工作表),而不是代码模块工作表。我不确定@Mike Woodhouse提供的第二个短片段,但我认为它应该在A列中发生任何更改时自动运行,因此您不需要将其作为宏运行。这现在更有意义了,但我仍然做了一些错误的事情。我正在做的是:打开相关工作簿,没有其他内容(工作簿只有一张工作表)。打开VBE(alt+F11),在项目窗口中右键单击相关工作表并选择“插入模块”。然后我打开那个模块,复制并粘贴你和残余者给我的代码(在上面的答案中)到模块代码区。然后我点击run,得到了前面提到的错误。我还尝试将代码粘贴到工作表的“代码”窗口中,但也没有成功。知道我做错了什么吗?抱歉..是的,将代码粘贴到模块代码错误中,如前所述。然后返回工作表本身,通过菜单选择工具>宏>运行,然后选择着色并单击运行。如果只是在代码编辑器中点击run,那么代码编辑器就是活动工作表。
Private Sub Worksheet_Change(ByVal Target As Range)

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

    colorize

End Sub