我一直在尝试让我的登录用户窗体登录时单击基于表中的数据在工作簿中,但我似乎无法得到正确的代码。Excel VBA和用户窗体登录和密码VLOOKUP表
详情如下:
用户窗体的用户名的文本框= UsernameTextbox;
用户形式的密码textbox = PasswordTextbox;
用户窗体提交按钮= LoginButton
我的工作簿具有多个片材,其中之一是"Users"
的。在该表中,有一张名为"Users_Table"
的表格。该表有4列:
ID(个别标识为用户)[A列],
用户名[列B],
密码[柱C],
管理员(答案是“真”或“假”,具体取决于他们是否拥有管理员权限)[D栏]。
我试图做到这一点: 如果用户名和密码是用户正确的,如果管理员列条目为False,那么我想告诉张"Quick Add"
和"Overview"
,我要打表"Admin"
隐藏(不是非常隐藏,因为我需要使用此表上的数据来处理其他宏),并且使表非常隐藏,因此登录的用户无法看到其他用户的详细信息。但对于正确输入用户名和密码的用户以及管理员列条目为True的用户,我想显示所有表单。
这是我到目前为止有:
Private Sub LoginButton_Click()
Dim Username As String
Username = UsernameTextbox.Text
Dim password As String
Password = PasswordTextbox.Text
If IsNull(Me.UsernameTextbox) Or Me.UsernameTextbox = "" Then
MsgBox "You must enter your username.", vbOKOnly, "Required Data"
Me.UsernameTextbox.SetFocus
Exit Sub
End If
If IsNull(Me.PasswordTextbox) Or Me.PasswordTextbox = "" Then
MsgBox "You must enter your Password (case sensitive).", vbOKOnly, "Incomplete Entry"
Me.PasswordTextbox.SetFocus
Exit Sub
End If
Dim temp As String
On Error Resume Next
temp = WorksheetFunction.VLookup(Me.UsernameTextbox.Value, Worksheets("Users").Range("Users_Table"), 2, 0)
If Username = temp Then
Err.Clear
temp = ""
temp = WorksheetFunction.VLookup(Me.UsernameTextbox.Value, Worksheets("Users").Range("Users_Table"), 3, 0)
On Error Goto 0
If Password = temp Then
Sheets("Quick Add").Visible = xlSheetVisible
Sheets("Overview").Visible = xlSheetVisible
Sheets("Admin").Visible = xlSheetHidden 'This is now just Hidden and not VeryHidden since other macros need to use data on this sheet
Sheets("Users").Visible = xlVeryHidden
MsgBox "Password and Username Accepted. You are now Logged In."
'Unload Me
'Sheets("Quick Add").Select
'Range("A1").Select
Else
Sheets("Quick Add").Visible = xlVeryHidden
Sheets("Overview").Visible = xlVeryHidden
Sheets("Admin").Visible = xlVeryHidden
Sheets("Users").Visible = xlVeryHidden
MsgBox "Username and Password Combination Not Accepted"
End If
Else
Sheets("Quick Add").Visible = xlVeryHidden
Sheets("Overview").Visible = xlVeryHidden
Sheets("Admin").Visible = xlVeryHidden
Sheets("Users").Visible = xlVeryHidden
MsgBox "Invalid Username"
End If
End Sub
这适用于在"Users_Table"
的第一个条目,但它不会承认别人的用户名(所以我不知道这是否是识别用户的密码,因为它在初始用户名检查时失败)。任何想法可能会出错?我也不确定我如何去添加上面提到的管理员要求。我需要管理员("Admin"
列中的“True”,即"Users_Table"
中的列D)能够查看所有工作表;以上代码仅供用户使用,并显示"Quick Add"
和"Overview"
,并隐藏"Admin"
和"Users"
表。
任何帮助将不胜感激。谢谢!
太棒了!正是我需要的。谢谢! – akrasia