如何在 VBA 中要求密码来终止用户表单
How to require password to terminate a userform in VBA
我想阻止用户在不知道密码的情况下关闭表单和编辑电子表格。我可以让用户窗体保持打开状态,但我不知道如何初始化窗体,以便所有命令按钮仍然有效。
我试过使用如下所述的 if 语句。用户窗体保持打开状态但未初始化,因此用户无法输入密码或 运行 用户窗体。
Private Sub UserForm_Terminate()
Password = InputBox("Enter Password")
If Password = "syntax" Then
UserForm1.Hide
ElseIf Password <> "syntax" Then
UserForm1.Show
End If
End
End Sub
没有任何错误消息,但是如果 VBA 编辑器 window 没有打开,用户必须完全关闭 Excel。任何有关下一步尝试的建议都将受到赞赏。提前致谢
您可以使用 UserForm_QueryClose
拦截用户窗体上的所有 'close' 操作。此代码将进入用户表单本身。
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Dim password As String
password = InputBox("Enter Password")
If password = "syntax" Then
Cancel = False 'If password is correct, allow close event to proceed
ElseIf password <> "syntax" Then
Cancel = True 'If password is incorrect, cancel the close event
End If
End Sub
就像 K.Dᴀᴠɪs 指出的那样,这仍然不会阻止任何人暂停代码执行并手动关闭表单(Excel 只是不提供该级别的安全性)。
我想阻止用户在不知道密码的情况下关闭表单和编辑电子表格。我可以让用户窗体保持打开状态,但我不知道如何初始化窗体,以便所有命令按钮仍然有效。
我试过使用如下所述的 if 语句。用户窗体保持打开状态但未初始化,因此用户无法输入密码或 运行 用户窗体。
Private Sub UserForm_Terminate()
Password = InputBox("Enter Password")
If Password = "syntax" Then
UserForm1.Hide
ElseIf Password <> "syntax" Then
UserForm1.Show
End If
End
End Sub
没有任何错误消息,但是如果 VBA 编辑器 window 没有打开,用户必须完全关闭 Excel。任何有关下一步尝试的建议都将受到赞赏。提前致谢
您可以使用 UserForm_QueryClose
拦截用户窗体上的所有 'close' 操作。此代码将进入用户表单本身。
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Dim password As String
password = InputBox("Enter Password")
If password = "syntax" Then
Cancel = False 'If password is correct, allow close event to proceed
ElseIf password <> "syntax" Then
Cancel = True 'If password is incorrect, cancel the close event
End If
End Sub
就像 K.Dᴀᴠɪs 指出的那样,这仍然不会阻止任何人暂停代码执行并手动关闭表单(Excel 只是不提供该级别的安全性)。