使用VBA进行颜色填充,有条件地使用单元格值

时间:2013-01-29 12:06:42

标签: excel vba

我希望根据单元格中选择的文本在Excel中填充一系列单元格(C2:C7)(会有一个下拉菜单,其中两个值为“SD”和“CS” “)。到目前为止,这是我的代码:

Sub ChangeColor()     Dim rCell As Range

With Sheet1
For Each rCell In .Range("C2:C7")

If rCell.Value <= SD Then
rCell.Interior.Color = vbRed
ElseIf rCell.Value <= CS Then
rCell.Interior.Color = vbGreen
Else: rCell.Interior.Color = vbYellow
End If
End With

End Sub

我被告知存在编译错误:结束时没有使用

我刚刚开始使用VBA,所以有人可以告诉我我做错了什么吗?

2 个答案:

答案 0 :(得分:5)

要修复代码,您需要插入Next语句。在End With行之前。此外,最好使用缩进来直观地查看不同的代码块。在你的情况下,它看起来像这样:

Sub YourSub
    With Sheet1
        For Each rCell In .Range("C2:C7")
            If rCell.Value <= SD Then
                rCell.Interior.Color = vbRed
            ElseIf rCell.Value <= CS Then
                rCell.Interior.Color = vbGreen
            Else
                rCell.Interior.Color = vbYellow
            End If
        Next rCell
    End With
End Sub

另外,考虑在这里使用条件格式而不是VBA - 它会做同样的事情,但更容易!

答案 1 :(得分:-1)

我不确定它是否正常工作,但你可以试试这个,因为当你输入脚本&#34;对于命令&#34;然后你需要输入下一个。并且&#34; For&#34;更习惯于创建循环:

Sub ChangeColor()
    Dim rCell As Range
    With Sheet1
    For Each rCell In .Range("C2:C7")
        If rCell.Value <= SD Then
            rCell.Interior.Color = vbRed
        ElseIf rCell.Value <= CS Then
            rCell.Interior.Color = vbGreen
        Else rCell.Interior.Color = vbYellow
        End If
    Next
    End With
End Sub