错误1004删除Worksheet_Change的范围目标

时间:2017-03-17 09:26:44

标签: excel vba

我在我的一个页面上有这个子,我希望当用户更改B2:B10中的一个单元格时,日期出现在同一行的A列中:

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Application.Intersect(Target, Range("B2:B10")) Is Nothing Then
    Target.Offset(0, -1).Value = Date
End If

End Sub

效果很好,但是如果我选择范围A2:B10并按下删除我有一个1004运行时错误。你知道我为什么以及如何避免这种情况? 谢谢!

1 个答案:

答案 0 :(得分:1)

当选择从A2到B10的范围时,if中的相交为真,但是当使用Target.Offset(0,-1)时,您试图寻址A列左侧的范围。 A是第一个,这显然会导致错误。

因此,请尝试检查Target.Column是否大于1:

If Not Application.Intersect(Target, Range("B2:B10")) Is Nothing Then
    If Target.Column > 1 Then
        Application.EnableEvents = False 'Prevents the Event from firing again when changing a value.
        Target.Offset(0, -1).Value = Date
        Application.EnableEvents = True
    End If
End If

此外,在不禁用事件的情况下,更改“更改事件”中的值将再次触发它,从而导致循环。