在第一行设置断点,然后逐步执行(F8),可以注意到程序不遵循上下序列,而是进入IF块,然后离开IF块,重新输入IF退出后阻止(击中End Sub后)。有人可以解释一下吗?
Private Sub Worksheet_Change(ByVal Tgt As Range)
If Not IsNumeric(Tgt.Value) Then
MsgBox "Numbers Only"
Tgt.ClearContents
Tgt.Activate
End If
End Sub
答案 0 :(得分:0)
简单。您的代码位于Change事件中,每次更改任何单元格后都会触发该事件。但代码本身会进行更改,因此会触发对自身的调用。 为确保更改事件所做的更改不会触发更改事件:-),请使用以下命令启动更改事件:
Application.EnableEvents = False
确保添加
Application.EnableEvents = True
就在End Sub line的上方。