为什么我从 VBA Select 案例中得到 random/wrong 输出?
Why do I get random/wrong output from 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
Check
在循环的每次迭代中都是常量,因此 Select Case Check
总是计算出相同的结果,并且此过程的执行结果完全取决于发生的任何单元格的值成为调用过程时的 ActiveCell
。
Avoid Select and Activate,但要解决当前的紧迫问题,您需要在此处将 Check
替换为 ActiveCell
,并可能显式调用其 Value
成员:
Select Case ActiveCell.Value
Check
赋值变得多余,现在循环将连续激活从 A2 开始的单元格,评估其内容,并相应地设置内部颜色。
这也可以在没有任何 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
。
Avoid Select and Activate,但要解决当前的紧迫问题,您需要在此处将 Check
替换为 ActiveCell
,并可能显式调用其 Value
成员:
Select Case ActiveCell.Value
Check
赋值变得多余,现在循环将连续激活从 A2 开始的单元格,评估其内容,并相应地设置内部颜色。
这也可以在没有任何 VBA 代码的情况下实现,使用应用于整行的条件格式规则。考虑改用条件格式。