VBA Excel:常规更改检测

是否有一个对象和/或函数可以检测或表示工作表上的一般变化? 类似于(例如) ComboBox1_Change()但可以应用于整个工作表。 几乎像Worksheet1_Change() 。 任何build议,欢迎。 谢谢。

最简单的方法是使用工作表更改事件:

 Private Sub Worksheet_Change(ByVal Target As Range) MsgBox "Change Detected!" End Sub 

有一些情况会使你陷入无限循环。 考虑这个代码:

 Private Sub Worksheet_Change(ByVal Target As Range) Range("A1").Value = "Change" End Sub 

在Range(“A1”)代码上设置一个断点,然后在表单中的其他位置进行更改,并计算该断点的命中次数。 当你厌倦了打F5,停止代码,并试试这个:

 Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False Range("A1").Value = "Change" Application.EnableEvents = True End Sub 

你会看到代码只会触发一次。 这可能是你以后的事情。

这是非常重要的,你有Application.EnableEvents = True行,否则你会看到你的代码不工作(默认情况下,EnableEvents不会在代码结束时恢复为True)。