我对下面的代码有问题。我刚刚开始学习这个,当我做一个简单的练习时,结果发现代码非常随机地工作。
有时什么都不做,有时只选择一个案例,但从未应用正确的格式。我很困惑。
你能帮忙吗?;)
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代码的情况下实现,使用应用于整行的条件格式规则。请考虑改用条件格式。