我在我的一个页面上有这个子,我希望当用户更改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运行时错误。你知道我为什么以及如何避免这种情况? 谢谢!
答案 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
此外,在不禁用事件的情况下,更改“更改事件”中的值将再次触发它,从而导致循环。