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

Posted

技术标签:

【中文标题】使用 VBA 进行颜色填充,以单元格值为条件【英文标题】:Colour Filling using VBA, Conditional on cell value 【发布时间】:2013-01-12 23:59:08 【问题描述】:

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

子更改颜色() Dim rCell 作为范围

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

我被告知有一个编译错误:End With without With

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

【问题讨论】:

Conditional formatting 也是一种方法:D 只要您管理得当,它不会使工作表变得笨重.. 我可以使用条件格式化来做到这一点,但是下拉列表中有 5 个名称,如果选择了下拉名称,我还想做其他事情,例如用特定颜色突出显示某些行。因此我尝试了 VBA .. 有什么建议吗? 如果您使用的是 Excel 2007 或更高版本,则可以使用条件格式来执行此操作。 干杯,有戏! 【参考方案1】:

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

子你的子 使用 Sheet1 对于 .Range("C2:C7") 中的每个 rCell 如果 rCell.Value

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

【讨论】:

Smart Indenter 是一个有用的插件(也适用于 2007 和 2010,已通过个人使用验证),它将帮助您缩进代码以使其更具可读性 同意——非常有用的工具!虽然我建议养成在编码过程中手动正确缩进的好习惯(以便在编码过程中可以看到错误) - 并且只使用 Smart Indenter 来修复丑陋的代码/验证自己的代码......【参考方案2】:

我不确定它是否有效,但你可以试试这个,因为当你输入脚本“For commands”时,你需要输入下一个。而“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 读取单元格颜色

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

在 Excel VBA 中,为单元格分配填充颜色会产生 #Value

将单元格值转换为日期时间