如何在Workbook_BeforeSave之前停止执行Worksheet_Change的Excel?

更新:已解决 的问题我的同事在Workbook_BeforeSave()期间更改单元格,而不禁用事件,因此触发了Worksheet_Change() 是的,愚蠢的,但至less这是我们的错,不是Excel的

我注意到,每当我在Excel中按Ctrl + S时, Worksheet_Change()Workbook_BeforeSave()之前被触发。 是否有可能抑制这种行为使用VBA代码,但没有抑制所有事件(即没有Application.EnableEvents = false )?

无论我在做什么,都会发生这种情况。 我已经阅读过与ComboBoxes有类似问题的人,但是我没有编辑ComboBoxes,但是Worksheet_Change()始终在保存之前触发。

有任何想法吗? 我只想弄清楚当保存文档时如何绕过Worksheet_Change()一些代码,因为只有在用户实际更改某些内容(而不是保存工作簿)时应该执行该代码。 储蓄绝不会改变…

这是我们的编码错误:

我的同事在Workbook_BeforeSave()期间正在更改单元格,而不禁用事件,因此触发了Worksheet_Change()。

修复很简单。 在Workbook_BeforeSave()中:

 Application.EnableEvents = False ' Some final changes Application.EnableEvents = True 

就是这样:)

添加一个全局标志variables。

input一个按下按键时触发的函数,如果CTRL + S将标志设置为true,

如果此标志为true,则worksheet_change事件应该短路。

而workbook_aftersave应该把它改回false。