Excel 2007 VBA:同一事件过程结束后,事件将重新触发


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

最新更新