错误1004删除Worksheet_Change的范围目标

我在我的页面上有这个子,我希望当用户更改B2:B10中的一个单元格时,date显示在同一行的列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 

它运作良好,但如果我select范围A2:B10,然后按删除我有一个1004运行时错误。 你知道为什么以及如何避免吗? 谢谢 !

当select从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 

另外,在不禁用事件的情况下,更改Change Event内的值将再次触发,导致循环。