【发布时间】:2018-03-06 23:12:08
【问题描述】:
场景: 用户正在运行启用宏的 Excel 工作簿。用户单击用户窗体上的链接,该链接启动另一个启用宏的 Excel 工作簿,该工作簿也具有用户窗体。然后使用以下代码关闭第二个工作簿:
Private Sub btnExit_Click()
'Check if other Excel files are open before quitting the application
If Workbooks.Count = 1 Then
Application.Quit
Else
ThisWorkbook.Close
End If
End Sub
还有……
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim intResponse As Integer
If MsgBox("Are you sure you would like to exit the calculator?", vbYesNo + vbQuestion) = vbNo Then
Cancel = True
End If
ThisWorkbook.Saved = True
End Sub
在关闭第二个工作簿 (ThisWorkbook.Close) 时,原始工作簿保持打开状态,但是,之前可见的 vbModeless 用户窗体已被杀死。还应该提到第二个工作簿的表单是模态的。
如果使用右上角的 Excel 退出按钮关闭第二个 Workbook,则不会出现此问题。
有人知道为什么会这样吗?是因为以编程方式关闭工作簿时 Excel.Application 的代码执行停止了吗?会不会是因为表单模式的不同?除了在工作表中的原始工作簿上放置一个按钮以重新启动用户窗体之外,还有其他解决方法吗?
非常感谢您对此问题的任何帮助! CiViCChiC79
【问题讨论】: