excel - VBA : Choosing discontinuous cell ranges in the loop 中的错误

标签 excel 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 新手,这非常令人沮丧。

最佳答案

我不喜欢将太多东西连接在一起,而是使用 token 替换方法:

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

关于excel - VBA : Choosing discontinuous cell ranges in the loop 中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68585746/

相关文章:

Excel VBA 如果单元格(x,J)。值(value)=值(value)

javascript - JSON 键作为 JavaScript 中的 JSON 值

excel - VBA Cdate 解释 DD-MM-YYYY

excel - 如何在 ADODB SELECT 期间捕获 Escape 键(Excel VBA)

Excel VBA 将值粘贴到第一个空白行

VBA Excel - 以正确的顺序将列放入范围中

c# - OpenXML Spreadsheet : Excel gives an error, 然后修复它并且它可以工作。 (C#)

python - 使用 pandas 将 Excel 工作表(Listobject)读取到 python 中

excel - 根据一个字母删除行

vba - 使用 Excel VBA 在 XLS 文件中显示 Excel 2007 功能区