2017-07-30 32 views
0

我希望Excel在保存前要求我輸入密碼。如果密碼正確,則保存;如果沒有顯示警報並且不保存。BeforeSave事件提示密碼詢問用戶表單兩次

這是我寫的代碼,它調用一個用戶窗體來獲取密碼,該密碼是一個文本框和兩個按鈕,分別是「確定」和「取消」。

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 

    Dim Password As String 
    Dim InputPass As String 
    Password = "MyPass" 
    UserForm1.TextBox1.Value = "" 
    UserForm1.Show 
    InputPass = UserForm1.TextBox1.Value 
    If InputPass = Password Then 
     ActiveWorkbook.Save 
    Else 
     MsgBox ("Wrong password!") 
     Cancel = True 
    End If 

    End Sub 

問題是,當我輸入正確的密碼時,它會再次提示用戶窗體。我不想再次獲取用戶表單。

謝謝。

回答

1

您不需要撥打ActiveWorkbook.Save,工作簿已處於保存過程中。只有當您設置Cancel = True時,工作簿纔會被保存。調用.Save會再次觸發事件。

+0

我還會提到它不一定是當前正在保存的「ActiveWorkbook」,「ThisWorkbook」是事件代碼中最安全的引用。 –

+1

這個workbook.save會觸發一個保存循環嗎?然後,確實只是刪除它應該可以解決問題。 – Luuklag

+0

是的,我現在在答案中提到。助教。 –