更新:问题已解决
我的一位同事在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。