更新:问题已解决 我的一位同事正在Workbook_BeforeSave()
期间更改单元格而不禁用事件,从而触发Worksheet_Change()
。是的,很傻,但至少这是我们的错,而不是Excel的
我注意到每当我在Excel中按Ctrl + S时,Worksheet_Change()
会在Workbook_BeforeSave()
之前触发。是否可以使用VBA代码来抑制此行为,但不会压制所有事件(即没有Application.EnableEvents = false
)?
无论我在做什么,都会发生这种情况。我读过有关ComboBoxes有类似问题的人,但我没有编辑ComboBoxes,但Worksheet_Change()
在保存之前总会激活。
有什么想法吗?我只是试图弄清楚如何在保存文档时绕过Worksheet_Change()
内的一些代码,因为该代码只应在用户实际更改内容时执行,而不是在保存工作簿时执行。储蓄绝不会改变......
答案 0 :(得分:23)
这是我们方面的编码错误:
我的一位同事在Workbook_BeforeSave()期间更改了一个单元格而没有禁用事件,因此触发了Worksheet_Change()。
修复很简单。在Workbook_BeforeSave()中:
Application.EnableEvents = False
' Some final changes
Application.EnableEvents = True
就是这样:))
答案 1 :(得分:2)
添加全局标志变量。
输入按下按键时触发的功能,如果按CTRL + S,则将标志设置为true。
如果此标志为true,则worksheet_change事件应该短路。
并且workbook_aftersave应该将其更改为false。