2015-09-02 52 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