使用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,所以有人可以告诉我我做错了什么吗?
答案
要修复代码,您需要插入Next
statement。在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进行颜色填充,有条件地使用单元格值的主要内容,如果未能解决你的问题,请参考以下文章