【问题标题】:VBA for password does not continue after password was entered in text field在文本字段中输入密码后,密码的 VBA 不会继续
【发布时间】:2018-06-28 13:15:55
【问题描述】:

在我的电子表格中,我有一个链接到以下 VBA 的按钮:

Sub Button_01()
If UserForm1.checkPassword() = True Then
Sheet1.Range("C3").Value = 1
Else
End If
End Sub

通过这个按钮,我触发了一个具有以下 VBA 的用户表单:

Private passwordStatus As Boolean

Private Sub CommandButton1_Click()
    Dim a As String
    Dim Password As String
    a = "123"
    Password = TextBox1.Text
    passwordStatus = False
    If Password = a Then
        MsgBox "Password Correct.", vbInformation
        passwordStatus = True
        Unload Me
    Else
        MsgBox "Password Incorrect. Please try again.", vbCritical
    End If
End Sub

Function checkPassword() As Boolean
  UserForm1.Show
  checkPassword = passwordStatus
End Function

UserForm1 打开时没有任何问题,但是当我在用户窗体中输入密码时,该过程无法继续。 The UserForm1 就呆在那里。

我在我的代码中找不到阻止宏在我输入密码后继续执行的错误。你能帮帮我吗?

【问题讨论】:

  • 您的代码也适用于我(但还有另一个问题。请参阅 JvdV 答案)

标签: excel vba


【解决方案1】:

对我来说,您的代码完美运行,除了:

Sub Button_01()
If UserForm1.checkPassword() = True Then
Sheet1.Range("C3").Value = 1
Else
End If
End Sub

这段代码会出错。

变化:

Sheet1.Range("C3").Value = 1

收件人:

Sheets(1).Range("C3").Value = 1
  • 单击工作表上分配有 Button_01 的按钮将打开 userform1。
  • 在打开的用户窗体上,我可以单击 OptionButton1,它将运行它的 click_event
  • 如果我在 textbox1 中输入“123”,它将隐藏用户表单,错误的密码会触发 msgbox 重试。

【讨论】:

  • 您好 JvdV,非常感谢您的回答。我弄清楚为什么它不能在我的网站上运行。我从另一个电子表格中复制了 UserForm 代码,但不知何故忘记在 UserForm 上插入 CommandButton1。
【解决方案2】:

在用户窗体和常规模块之间传递信息通常是通过公共变量完成的。您应该将大部分代码放在常规模块中,并且只使用用户表单来通过检查。

常规模块:

Public CorrectPassword As Boolean

Sub Button_01()
    CorrectPassword  = False
    UserForm1.Show
    If CorrectPassword = True Then
        Sheets(1).Range("C3").Value = 1
    Else
        Msgbox "Password Incorrect. Please try again.", vbCritical
    End If
End Sub

用户表单模块:

Private Sub CommandButton1_Click()
    Dim a As String
    Dim Password As String
    a = "123"
    Password = TextBox1.Text
    If Password = a Then CorrectPassword = True
    Unload Me
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-15
    • 1970-01-01
    • 1970-01-01
    • 2013-02-24
    • 1970-01-01
    • 1970-01-01
    • 2013-05-24
    相关资源
    最近更新 更多