Excel 删除工作表更改的范围目标时出错1004

Excel 删除工作表更改的范围目标时出错1004,excel,vba,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

我在我的一个页面上有一个子单元,我希望当用户更改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范围并按Delete键,则会出现1004运行时错误。你知道我为什么以及如何避免这种情况吗?
谢谢

当选择从A2到B10的范围时,if中的相交为真,但当使用Target.Offset0,-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

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

非常感谢,它可以正常工作!有没有办法进行严格的交叉?如果目标不完全是B2:B10,则intersect为false?这将检查目标是否完全是B2:B10:如果target.AddressFalse,则false=B2:B10,然后