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

Schreibe einen Kommentar