2017-05-13 78 views
1

我在創建一個控件,要求用戶在關閉工作簿之前在特定單元格中輸入信息。如果用戶嘗試關閉時單元格爲空,則應提示他們留在工作簿中並輸入信息或退出而不保存。如果單元格已填充,則工作簿應自動保存。Workbook_BeforeClose MsgBox Bug

下面是我設法到目前爲止,放置在ThisWorkbook對象。我遇到的問題是MsgBox出現後,選擇一個選項,然後再次出現。我無法弄清楚爲什麼會發生這種情況,所以希望這裏有人能指出我錯過了什麼。

注意,我只希望當前活動工作簿關閉,而不是整個應用程序退出。所以如果用戶打開其他Excel窗口,我不希望這些也關閉。

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 

回答

1

嗯,你嘗試關閉再次使用ThisWorkbook.Close False工作簿,這就是第二個事件源自於。

相反,使用ThisWorkbook.Saved = True防止確認對話框彈出:

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 
+0

這是它!感謝一堆,知道它會簡單! –