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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用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

我被告知有一个编译错误:结束没有With

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

答案

要修复代码,您需要插入Nextstatement。在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 - 它会做同样的事情,但更容易!

另一答案

我不确定它是否正常工作,但你可以试试这个,因为当你输入脚本“For commands”时,你需要输入next。而“For”更习惯于创建循环:

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

以上是关于使用VBA进行颜色填充,有条件地使用单元格值的主要内容,如果未能解决你的问题,请参考以下文章

Excel VBA:用相邻的单元格值填充空单元格

如何使用 vba 在 Excel 2007 中找到条件格式单元格的填充颜色值?

基于单元格值的自动填充线

是否可以将电子表格数字格式应用于包含单元格值的单元格?

Excel-VBA 读取单元格颜色

VBA对指定单元格填充颜色并且赋值