Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As Range)
Application.EnableEvents = False
' Some code
Application.EnableEvents = True
End Sub
"某些代码"用于当用户在某个单元格中粘贴某些值时进行捕获。如果粘贴是在复制操作之后出现的,则过程可以正常工作。如果粘贴值是在剪切操作之后出现的,那么在执行到达 End Sub 后,程序将再次启动,我无法确定发生了什么变化导致重新触发。
源单元格和目标单元格的格式为数据验证。
试试这个,你可以看到触发的第一个事件来自被剪切的范围,第二个事件来自粘贴目标。
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As Range)
Application.EnableEvents = False
Debug.Print Sh.Name, Source.Address()
Application.EnableEvents = True
End Sub