Workbook_BeforeClose MsgBox错误

我试图创build一个控件,要求用户在closures工作簿之前在特定的单元格中input信息。 如果用户尝试closures时单元格为空,则应提示他们留在工作簿中并input信息或退出而不保存。 如果单元格填充,则工作簿应自动保存自己。

下面是我设法到目前为止,放置在ThisWorkbook对象。 我遇到的问题是MsgBox出现后,select一个选项,然后再次出现。 我无法弄清楚为什么会发生这种情况,所以希望这里有人能指出我错过了什么。

请注意,我只想要当前活动工作簿closures,而不是整个应用程序退出。 所以,如果用户有其他的Excel窗口打开,我不希望那些也被closures。

Private Sub Workbook_BeforeClose(Cancel As Boolean) If Range(“A1”).Value = “” Then OutPut = Msgbox (“A1 is empty. Exit without saving?”, vbOKCancel + vbDefaultButton2) If OutPut = 1 Then ThisWorkbook.Close False Else: Cancel = True Exit Sub End If End If ActiveWorkbook.Save End Sub 

那么,你尝试使用ThisWorkbook.Close False再次closures工作簿,这是第二个事件源自的地方。

而是使用ThisWorkbook.Saved = True来防止确认对话框popup:

 Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim OutPut As VbMsgBoxResult If Range("A1").Value = "" Then OutPut = MsgBox("A1 is empty. Exit without saving?", vbOKCancel + vbDefaultButton2) If OutPut = vbOK Then ThisWorkbook.Saved = True Else Cancel = True End If Else ThisWorkbook.Save End If End Sub