J'ai essayé d'obtenir mon login userform pour se connecter lorsque je clique sur la base de données dans un tableau dans le classeur, mais je n'arrive pas à obtenir le code correct .Excel VBA & UserForm Connexion et mot de passe Table VLOOKUP dans feuille
Détails sont:
Userform nom d'utilisateur = zone de texte UsernameTextbox;
Userform mot de passe textbox = PasswordTextbox;
Userform bouton submit = LoginButton
Mon classeur a un certain nombre de feuilles, dont l'un "Users"
. Dans cette feuille, il y a une table appelée "Users_Table"
. Cette table a 4 colonnes:
ID (ID individuels pour les utilisateurs) [colonne A],
Nom d'utilisateur [colonne B],
Mot de passe [colonne C],
(Admin la réponse est "Vrai" ou "Faux" selon qu'ils ont des droits d'administrateur) [Colonne D].
Je suis en train de le faire: Si le nom d'utilisateur et mot de passe est correct pour un utilisateur et si l'entrée de la colonne d'administration est faux, alors je veux montrer des feuilles "Quick Add"
et "Overview"
, je veux faire la feuille "Admin"
caché (pas très caché depuis que j'ai besoin d'utiliser des données sur cette feuille pour d'autres macros), et faire feuilles VeryHidden afin que ceux qui sont connectés ne peuvent pas voir les détails des autres utilisateurs. Mais pour les utilisateurs qui saisissent correctement leur nom d'utilisateur et mot de passe ET pour qui l'entrée de la colonne d'administration est True, je veux afficher toutes les feuilles.
C'est ce que j'ai jusqu'à présent:
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
Cela fonctionne pour la première entrée dans le "Users_Table"
, mais il ne reconnaît pas le nom d'utilisateur pour les autres (et donc je ne sais pas si elle est reconnaître les mots de passe pour les utilisateurs car cela échoue lors de la vérification initiale du nom d'utilisateur). Des idées sur ce qui pourrait mal tourner? Je ne sais pas non plus comment je pourrais ajouter l'exigence d'administration mentionnée ci-dessus. J'ai besoin d'administrateurs ("True" dans la colonne "Admin"
, c'est-à-dire la colonne D, dans le "Users_Table"
) pour pouvoir voir toutes les feuilles; le code ci-dessus est juste pour les utilisateurs et montre "Quick Add"
et "Overview"
et cache "Admin"
et "Users"
feuilles.
Toute aide serait grandement appréciée. Je vous remercie!
Brillant! Juste ce dont j'avais besoin. Je vous remercie! – akrasia