非常感谢您的快速回复。
我最终在工作表中使用了一个命名的单元格,类似于hstay取得的。
If ThisWorkbook.Sheets("MD").Range("AllowMacro").Value = 0 Or Me.Name <> ActiveSheet.Name Then Exit Sub
但是因为我需要工作表中的代码运行时计算的一些细胞,我不能设置application.Calculation = xlManual。 因此,代码仍然尝试执行一堆其他更改事件,但上面的代码阻止它们运行的不仅仅是第一行。然而,这仍然需要很多时间,这是非常令人沮丧的。猜猜我只需要再次考虑这个问题。
这是我如何开始和结束我的所有worksheet_chnage事件:
If ThisWorkbook.Sheets("MD").Range("AllowMacro").Value = 0 Or Me.Name <>
ActiveSheet.Name Then Exit Sub
ThisWorkbook.Sheets("MD").Range("AllowMacro").Value = 0
Application.ScreenUpdating = False
Application.EnableEvents = False
'some random code that trigger other change_events
Application.EnableEvents = True
Application.ScreenUpdating = True
ThisWorkbook.Sheets("MD").Range("AllowMacro").Value = 1