Vba BeforeSave事件提示密码询问userform两次

Vba BeforeSave事件提示密码询问userform两次,vba,excel,Vba,Excel,我希望Excel在保存前询问我密码。如果密码正确,则保存;如果没有,则显示警报并不保存 下面是我编写的代码,它调用一个userform来获取密码,密码是一个文本框和两个按钮OK和Cancel Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim Password As String Dim InputPass As String Password = "

我希望Excel在保存前询问我密码。如果密码正确,则保存;如果没有,则显示警报并不保存

下面是我编写的代码,它调用一个userform来获取密码,密码是一个文本框和两个按钮OK和Cancel

    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
问题是,当我输入正确的密码时,它会再次提示userform。我不想再次获取用户表单


谢谢。

您不需要调用Active工作簿。保存,工作簿已在保存过程中。只有将“取消”设置为True时,工作簿才不会保存。调用.Save会再次触发事件。

我还将提到,当前保存的不一定是ActiveWorkbook,此workbook是事件代码中最安全的引用。此workbook.Save是否会触发保存循环?事实上,仅仅移除它就可以解决问题。是的,它确实解决了问题,我在回答中已经提到了这一点。助教。