Excel-VBA - & UserForm Login und Passwort SVERWEIS-Tabelle in Blatt
Ich habe versucht, meine userform login anmelden, wenn Sie geklickt werden, basierend auf Daten in einer Tabelle in der Arbeitsmappe, aber ich kann einfach nicht scheinen, um den code zu erhalten Recht.
Details:
Userform Textfeld Benutzername = UsernameTextbox;
Userform Textfeld Kennwort ein = PasswordTextbox;
Userform senden-Schaltfläche = LoginButton
Meine Arbeitsmappe hat eine Anzahl Blätter, von denen "Users"
. In diesem Blatt gibt es eine Tabelle namens "Users_Table"
. Die Tabelle hat 4 Spalten:
ID (einzelne IDs für die Benutzer) [Spalte A],
Benutzername [Spalte B],
Passwort [Spalte C],
Admin (Antwort ist "True" oder "False" je nachdem, ob Sie haben admin-Rechte), [Spalte D].
Ich versuche, dies zu tun:
Wenn der Benutzername und das Passwort korrekt ist, für einen Benutzer, UND wenn die Spalte admin-Eintrag Falsch ist, dann will ich zu zeigen Blätter "Quick Add"
und "Overview"
möchte ich das Blatt "Admin"
versteckt (nicht VeryHidden, da ich die Daten auf diesem Blatt auch für andere macros), und machen "User"
Blätter VeryHidden so dass diejenigen, die angemeldet nicht sehen können andere Benutzer' details. Aber für Benutzer, die korrekten Eingabe von Benutzernamen und Passwort UND für wen der Spalte admin-Eintrag Wahr ist, möchte ich zeigen alle Blätter.
Dies ist, was ich habe, so weit:
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
Dies funktioniert für den ersten Eintrag in der "Users_Table"
, aber es wird nicht erkennen den Benutzernamen für die anderen (und ich weiß nicht, ob es ist die Anerkennung die Passwörter für die Benutzer, da es andernfalls auf den ersten Benutzernamen überprüfen). Irgendwelche Ideen, was könnte schief gehen? Ich bin mir auch nicht sicher, wie würde ich gehen über das hinzufügen im Admin-Anforderung erwähnt. Ich brauche Admins ("True" in "Admin"
Spalte, also Spalte D, in der "Users_Table"
) in der Lage sein, um zu sehen, alle Blätter; der code oben ist nur für Benutzer und zeigt "Quick Add"
und "Overview"
und versteckt "Admin"
und "Users"
Blätter.
Jede Hilfe wäre sehr geschätzt werden. Danke!
InformationsquelleAutor akrasia | 2017-06-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie haben es sehr kompliziert. Halten Sie es einfach. Versuchen Sie dies (ungetestet)
Meine Annahmen
In Blatt "Benutzer", Spalte B hat Benutzername, Col C hat Passwort und den Col D hat Admin-Werten.. Wenn nicht, dann bitte ändern Sie den obigen code wie erforderlich.
InformationsquelleAutor Siddharth Rout
Gibt es ein paar Fehler im code, die nicht Ihrer Beschreibung entsprechen.
Hier entsprechen Sie dem
UsernameTextbox
zu Spalte A (ID
). Der test auf die Existenz der Benutzername sollte in Spalte B nicht A. Die gleichen Fehler gemacht wird, wo entsprechen Sie den Benutzernamen auf derID
Spalte A insread von der Spalte B die Namen:Der beste Ansatz wäre, zu Holen, um die Reihe von dem Benutzer auf einmal (wenn es existiert) und von dort erhalten Sie alle Attribute.
InformationsquelleAutor A.S.H