我希望根据单元格中选择的文本在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,所以有人可以告诉我我做错了什么吗?
答案 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