Excel错误1004,当是的时突出显示adjecent单元格灰色

时间:2015-05-13 04:08:09

标签: excel vba excel-vba runtime-error

我正在尝试将宏放在我连续选择Yes的位置,下一个单元格显示为灰色。所以我有几个是的列,但对于我的生活无法找出/修复错误

  

错误
   运行时错误1004
   应用程序定义或对象违反错误

代码

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

1

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

ActiveCell 更改为目标是一个良好的开端。如果将值块粘贴到与E和/或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收到且G5收到,那么只有K5:L5将为灰色。我对非区分大小写进行了比较。

错误由安全退出。

答案 2 :(得分:0)

虽然发现了这个问题,但它正在使用条件突出显示,这就是与宏

冲突的内容