VBA中的错误:在循环中选择不连续的单元格范围
我的要求是根据 C 列单元格中输入的文本更改一行中不同单元格的单元格背景颜色。这适用于工作表中的所有行。
下面是代码:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
For i = 4 To 1800
Range("D" & i, "AW" & i).Interior.ColorIndex = 0
If Range("C" & i) = "Open" Then
Range("F" & i & ":H" & i, "K" & i, "L" & i, "AA"&i, "AD"&i, "AF"&i).Interior.ColorIndex = 15
ElseIf Range("C" & i) = "Boil" Then
Range("I" & i, "S" & i).Interior.ColorIndex = 15
End If
Next i
End Sub
但这给出了错误,说“参数数量错误或属性分配无效。让我知道,我哪里出错了。我是 VBA 新手,这非常令人沮丧。
回答
我不喜欢将太多东西连接在一起,而是使用令牌替换方法:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
Me.Range("D4", "AW1800").Interior.ColorIndex = 0 'faster like this...
For i = 4 To 1800
Select Case Me.Range("C" & i).Value
Case "Open"
Me.Range(Replace("F?:H?,K?,L?,AA?,AD?,AF?", "?", i)).Interior.ColorIndex = 15
Case "Boil"
Me.Range("I" & i, "S" & i).Interior.ColorIndex = 15
End Select
Next i
End Sub