1

我希望根据单元格中选择的文本在 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

有人告诉我有一个编译错误:End With without With

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

4

2 回答 2

5

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

子你的子
    使用 Sheet1
        对于 .Range("C2:C7") 中的每个 rCell
            如果 rCell.Value <= SD 则
                rCell.Interior.Color = vbRed
            ElseIf rCell.Value <= CS Then
                rCell.Interior.Color = vbGreen
            别的
                rCell.Interior.Color = vbYellow
            万一
        下一个 rCell
    结束于
结束子

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

于 2013-01-29T12:13:53.147 回答
-1

我不确定它是否有效,但你可以试试这个,因为当你输入脚本“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
于 2018-03-01T20:45:13.370 回答