ブックのデータに基づいてクリックするとログイン用のユーザーフォームを取得しようとしましたが、コードが正しく表示されないようです。Excel VBAとユーザーフォームのログインとパスワードVLOOKUPテーブル内のテーブル
詳細は以下のとおりです。
ユーザーフォームのユーザー名テキストボックス= UsernameTextbox。
ユーザーフォームのパスワードtextbox = PasswordTextbox;
ユーザーフォームが私のワークブックが
"Users"
そのうちの1つは、シートの数を、持っている= LoginButton
ボタンを提出します。そのシートには"Users_Table"
という表があります。
ID(ユーザーのための個人のID)列A]、
ユーザー名[列B]、
パスワード[列C]、
管理(:この表は、4つの列を有しています彼らは管理者権限を持っているかどうかに応じて "真"または "偽"です)[列D]。私はこのやろうとしている
:ユーザー名とパスワードは、ユーザーのために正しいと管理列のエントリがfalseの場合、私はシート"Quick Add"
と"Overview"
表示したい場合は は、私はシートを作りたいです"Admin"
隠されている(他のマクロにはこのシートのデータを使用する必要があるため、VeryHiddenではない)、シートをVeryHiddenにして、ログインしたユーザーは他のユーザーの詳細を見ることができない。しかし、ユーザー名とパスワードを正しく入力し、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の要件をどのように追加するかについてもわかりません。すべてのシートを表示できるようにするには、管理者が必要です("Admin"
列の「True」、つまり"Users_Table"
の列D)。上記のコードはUsersのみで、"Quick Add"
と"Overview"
を表示し、"Admin"
と"Users"
シートを隠しています。
ご協力いただければ幸いです。ありがとうございました!
ブリリアント!ちょうど私が必要としたもの。ありがとうございました! – akrasia