Excel 错误 1004,当是时,将相邻单元格突出显示为灰色

Excel error 1004, Highlight adjecent cells gray when yes

我正在尝试将一个宏放在我 select Yes 连续的位置,下一个单元格显示为灰色。所以我有几个是的专栏,但我一辈子都无法 figure/fix 排除错误

Error
Runtime Error 1004
Application-defined or object-defied error

代码

Private Sub Worksheet_Change(ByVal Target As Range)

If ActiveCell.Column = 5 Then

    Set r = Range(ActiveCell.Offset(0, 1), ActiveCell.Offset(0, 7))

    If Target.Value = "Yes" Or Target.Value = "YES" Then
        r.Interior.Color = RGB(192, 192, 192)
    Else
        r.Interior.Color = xlNone
    End If
End If

 If ActiveCell.Column = 7 Then

    Set s = Range(ActiveCell.Offset(0, 1), ActiveCell.Offset(0, 3))

    If Target.Value = "Yes" Or Target.Value = "YES" Then
        s.Interior.Color = RGB(192, 192, 192)
    Else
        s.Interior.Color = xlNone
    End If
 End If
End Sub

ActiveCell 不是更改的单元格。 Target 是。您需要将对 ActiveCell 的所有引用替换为 Target 并相应地调整偏移量。

ActiveCell 更改为 Target 是一个好的开始。您还应该补偿多个目标单元格,以防将值块粘贴到与列 E and/or G.

重叠的范围中
Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Intersect(Target, Union(Columns(5), Columns(7))) Is Nothing Then
        On Error GoTo Fìn
        Application.EnableEvents = False
        Dim o As Range, t As Range
        For Each t In Intersect(Target, Union(Columns(5), Columns(7)))
            Select Case t.Column
                Case 5
                    Set o = t.Offset(0, 1).Resize(1, 7)
                Case 7
                    Set o = t.Offset(0, 1).Resize(1, 3)
            End Select
            If LCase(t.Value) = "yes" Then
                o.Interior.Color = RGB(192, 192, 192)
            Else
                o.Interior.Pattern = xlNone
            End If
        Next t
    End If

Fìn:
    Set o = Nothing
    Application.EnableEvents = True

End Sub

我只将单元格范围设置为首先接收填充颜色。请注意,似乎确实存在交叉逻辑问题,如果 E5 收到 Yes 而 G5 收到 No 则只有 K5:L5 会是灰色的。我与 yes 进行了比较,不区分大小写。

错误被安全退出覆盖。

虽然发现了问题,但它使用了条件突出显示,所以这就是与宏冲突的地方