2016-06-14 70 views
1

我已经设定了以下用户窗体在Excel VBA:密码按钮,用户窗体

Private Sub CommandButton1_Click() 
Password = TextBox1.Text 
If Password = a Then 
MsgBox "Password Correct.", vbInformation 
Unload Me 
Else 
MsgBox "Password Incorrect. Please try again.", vbCritical 
End If 
End Sub 

密码变量=“测试”

此密码本身用户窗体完美的作品。现在我想将它连接到已经在工作表中的按钮。这个按钮后面的代码是在VBA编辑器中的部分“的ThisWorkbook”:

Sub Button_Test() 
UserForm1.Show 
Tabelle2.Range("C3").Value = 1 
End Sub 

的想法是按钮“Button_Test”是可以由用户窗体中输入一个密码保护。一旦密码输入正确,将执行宏“Tabelle2.Range(”C3“)。Value = 1”。

但是,目前我遇到的问题是,用户表单响应我的密码正确,但没有启动宏“Tabelle2.Range(”C3“)。Value = 1”。

如何在输入密码后告诉用户表单正确,它应该跳回宏“Button_Test”并继续该过程?

感谢您的任何帮助。

+0

这正是应与您发布的代码一起发生。用户表单是否卸载? – Rory

+0

我想你需要在按钮的点击处理程序中调用'Unload Me'来关闭表单。 – TmTron

+0

我重新启动了该文件,现在它工作。不知道为什么。然而,当用户窗体出现时,我点击了用户窗体右上方的“X”符号,宏开始了,但我没有输入密码。有没有办法避免这种情况? – Michi

回答

0

我会使用一个布尔值,当密码正确时您将设置为true。你可以做这样的事情:

守则MODUL或表

Sub Schaltfläche1_Klicken() 
'Load funktion Check Password 
If UserForm1.checkPassword() = True Then 
    'Run this Code when PWD was Correct 
    Tabelle1.Range("C3").Value = 1 
End If 
End Sub 

而在用户窗体,你可以把这样的代码是:

Private passwordStatus As Boolean 

Private Sub CommandButton1_Click() 
    Dim a As String 
    Dim Password As String 

    a = "123" 
    Password = TextBox1.Text 
    'Set Pawwordstatus at False before Testing 
    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 
    'Shows the User Form. And after Closing the Form 
    'The PasswordStatus Value will be returned and you can check if 
    'it is true 
    checkPassword = passwordStatus 
End Function 
+0

完美的作品。感谢这个好主意。 – Michi