为什么我从VBA选择案例中获得随机/错误的输出?



我对下面的代码有问题。我刚刚开始学习这个,当我做一个简单的练习时,结果发现代码非常随机地工作。

有时什么都不做,有时只选择一个案例,但从未应用正确的格式。我很困惑。

你能帮忙吗?;)

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

Check循环的每次迭代都是常量,因此Select Case Check总是计算相同的内容,并且执行此过程的结果完全取决于调用该过程时恰好是ActiveCell的任何单元格的值。

避免选择和激活,但要解决当前直接的问题,您需要在此处将Check替换为ActiveCell,并可能显式调用其Value成员:

Select Case ActiveCell.Value

Check分配变得多余,现在循环将连续激活从 A2 开始的单元格,评估其内容,并相应地设置内部颜色。

这也可以在没有任何VBA代码的情况下实现,使用应用于整行的条件格式规则。请考虑改用条件格式。

最新更新