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之后,程序再次启动,我无法确定引起重新引发的更改。

源和目标单元格使用数据validation进行格式化。

试试这个,你可以看到第一个被触发的事件是来自被切断的范围,第二个来自粘贴目的地。

 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