2015-09-02 76 views
1

我有一個簡單的腳本要求在關閉工作簿(以防止意外關閉)之前需要密碼,但如果輸入正確的關鍵字,InputBox將重新打開。我已經創建了以下腳本的多個迭代,但我無法解決它。VBA輸入框提示兩次

Sub Workbook_BeforeClose(Cancel As Boolean) 

If InputBox("Please enter the password to close the workbook.") <> "pa55word" Then 
    MsgBox ("Incorrect password. Please try again") 
    Cancel = True 
    Exit Sub 
Else 
    GoTo GoToClose 
End If 

GoToClose: 
ThisWorkbook.Close SaveChanges:=False 

End Sub 

回答

0

如果這樣的代碼是:

  • 代碼簡單地進行保存工作簿如果密碼是正確的沒有第二個接近
  • ThisWorkbook.Saved在前面講述的Excel工作簿完全更新,使有將不會是是否要保存消息 - 即它執行與ThisWorkbook.Close SaveChanges:=FalseFalse部分相同的任務,並且現有的Save事件關閉工作簿。

重新切割

Sub Workbook_BeforeClose(Cancel As Boolean) 

ThisWorkbook.Saved = True 
If InputBox("Please enter the password to close the workbook.") <> "pa55word" Then 
    MsgBox ("Incorrect password. Please try again") 
    Cancel = True 
End If 

End Sub 
+0

謝謝您的建議!我沒有想到預先包含'.aved'部分。 – CJK

0

禁用關閉前的事件。

+1

我試圖與要做到這一點'Application.EnableEvents = FALSE'但後來當我重新打開該文檔** **沒有我的宏執行。我相信這隻發生在關閉個人工作簿而不是整個Excel實例時,但我想知道是否有更好的解決方案。 – CJK