如何在工作簿保存之前阻止Excel启动Worksheet_Change



更新:问题已解决 我的一位同事在Workbook_BeforeSave()期间更改了一个单元格,但没有禁用事件,因此触发了Worksheet_Change()。是的,很傻,但至少这是我们的错,而不是Excel的

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

不管我在做什么,这种情况都会发生。我读到有人对组合框有类似的问题,但我不编辑组合框,但Worksheet_Change()总是在保存之前触发。

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

这是我们这边的一个编码错误:

我的一位同事在Workbook_BeforeSave()期间更改了一个单元格,但没有禁用事件,因此触发了Worksheet_Change()。

修复很容易。在Workbook_BeforeSave()中:

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

就是这样:)

添加一个全局标志变量。

输入一个在按键时触发的函数,若CTRL+S,它会将标志设置为true。

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

workbook_aftersave应该将其改回false。

最新更新