为什么我会从VBA Select Case中获得随机/错误输出?

时间:2019-11-20 19:05:28

标签: excel vba select-case

我对以下代码有疑问。我刚刚开始学习这一点,当我做一个简单的练习时,结果发现代码实际上是随机工作的。

有时什么也没做,有时只选择一种情况,但从未应用正确的格式。我很困惑

您能帮忙吗? ;)

Sub Colors()

Dim Check As String
Check = ActiveCell.Value
Range("A2").Select

Do While ActiveCell.Value <> ""

    Select Case Check
    Case "Red"
        ActiveCell.EntireRow.Interior.Color = RGB(200, 100, 100)
    Case "Blue"
        ActiveCell.EntireRow.Interior.Color = RGB(100, 100, 200)
    Case "Green"
        ActiveCell.EntireRow.Interior.Color = RGB(100, 200, 100)
    End Select

    ActiveCell.Offset(1, 0).Select

Loop

End Sub

1 个答案:

答案 0 :(得分:1)

\Teradata\Client\16.20\bin\ was unexpected at this time.在循环的每次迭代中都为常数,因此Check总是求值相同,并且此过程的执行结果仅取决于碰巧是任何单元格的值Select Case Check在调用过程时。

Avoid Select and Activate,但要解决当前的直接问题,您需要在此处将ActiveCell替换为Check,并可能明确地调用其ActiveCell成员:

Value

Select Case ActiveCell.Value 分配变得多余,现在循环将从A2开始依次激活一个单元格,评估其内容并相应地设置内部颜色。

使用条件格式设置规则应用于整个行,也可以在不使用任何VBA代码的情况下实现此目的。考虑改用条件格式。