我一直在嘗試讓我的登錄用戶窗體登錄時單擊基於表中的數據在工作簿中,但我似乎無法得到正確的代碼。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