如何解决Workbook_BeforeSave事件选择取消仍保存文件的问题?
解决Workbook_BeforeSave事件无论选择是/否都保存的问题
问题根源
你的代码逻辑本身没问题,但大概率是以下两个原因导致失效:
- 代码放错了模块:
Workbook_BeforeSave是工作簿级别的事件,必须放在ThisWorkbook模块中,放在普通模块或工作表模块里不会触发事件,自然无法阻止保存。 - 宏未启用:如果文件打开时宏被禁用,事件代码根本不会执行。
修复步骤
确认代码位置
按下Alt+F11打开VBA编辑器,在左侧工程窗口找到ThisWorkbook模块,双击打开后粘贴代码(替换原来错误位置的代码)。优化后的规范代码
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim response As VbMsgBoxResult response = MsgBox("Do you really want to save the workbook?", vbYesNo, "确认保存") ' 选择「否」时取消保存操作 If response = vbNo Then Cancel = True End Sub
验证效果
保存文件时会弹出确认对话框:
- 选「是」:正常执行保存流程
- 选「否」:保存操作被直接取消
内容的提问来源于stack exchange,提问作者Jamie Walker
相关产品推荐
相关产品推荐

