excel - 关闭工作簿,捕获 Cancel 事件
问题描述
我有Workbook_BeforeClose
事件代码。我喜欢它现在的工作方式,但我刚刚注意到Application.Visible = False
. 当我单击是时,它会保存工作簿,当我单击否时,它什么也不做,但是当我单击取消时,它已经完成Application.Visible = False
并且我看不到 Excel 应用程序。如何解决?
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Application.Visible = False
Application.DisplayFormulaBar = True
ActiveWindow.DisplayHeadings = True
ActiveWindow.DisplayGridlines = True
ThisWorkbook.Unprotect Password:="123456"
ActiveWorkbook.Sheets("Start").Visible = True
ThisWorkbook.Worksheets("Start").Activate
ThisWorkbook.Protect Password:="123456", Structure:=True, Windows:=False
End Sub
解决方案
与其依赖内置对话框,不如尝试使用您自己的对话框。这样你就可以更好地控制发生的事情和时间。
所以也许是这样的:
Dim closing As Boolean
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Not closing Then
answer = MsgBox("Save data?", vbYesNoCancel + vbQuestion, "Save data?")
If answer = vbYes Or answer = vbNo Then
closing = True
' your code here
ActiveWorkbook.Close savechanges:=answer = vbYes
Else
Cancel = True
End If
End If
End Sub
推荐阅读
- java - 在 Spring Reactive 中自定义 ErrorAttributeOptions 的问题
- javascript - 如何使用脚本编辑器(谷歌文档插件)删除谷歌文档中的空行?
- r - 如何使用日期 x 轴按顺序显示箱线图?
- python - IIS - Flask python 脚本 webconfig 错误 wfastcgi
- sql-server - SQL Server - ORDER BY 子句中 UDF 和按位运算的奇怪行为
- azure - Azure CosmosDB:使用 SDK 批量删除
- node.js - 如何在猫鼬中一起捕获多个文档
- javascript - 如何将鼠标悬停在图像上并获取鼠标所在位置的坐标
- unit-testing - Delphi - mORMot:安装出错。UTF8 测试中的自动测试错误!我该如何解决?
- javascript - 无法识别特定的 Javascript 函数?(ASP.NET MVC) JS/CSS/HTML