Guten Morgen,
ich habe hier vor einigen Tagen super Hilfe erhalten und hoffe nochmal auf so tollen Input eines Profis.
Problem:
Vor dem Öffnen des VBA-Projektes wird abgefragt, ob der Anmeldende Admin oder Benutzer ist. Hierfür greift die Abfrage auf ein Arbeitsblatt("Zugriffsrechte") zurück.
Ab D13 beginnen spaltenweise die Benutzernamen, ab E13 die hinterlegten Passwörter und ab F13 die Benutzergruppen (Admin oder Benutzer).
Ich habe mir einen Code zusammengestellt der prima funktioniert, allerdings komme ich bei dem letzten Schritt nicht weiter.
Derjenige, der sich als Benutzer anmeldet, dessen Benutzername soll automatisch auf ein anderes Tabellenblatt("Messprotokoll") in Zelle N3 eingetragen werden und diese Zelle soll gesperrt (vor Überschreiben) geschützt werden.
Wie kann ich den Code dahingehend clever ergänzen?
Option Explicit
Private Sub btnAnmelden_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
'Variablen dimensionieren
Dim rng As Range
Dim ws As Worksheet
'Benutzernamen suchen
Set rng = Range("tblZugriffsrechte[Benutzername]").Find(What:=txtBenutzername.Value, LookAt:=xlWhole)
'Prüfen, ob Benutzername angelegt ist
If rng Is Nothing Then
'Benutzer benachrichtigen
MsgBox "Dieser Benutzername ist nicht angelegt."
'Prozedur beenden
Exit Sub
End If
'Prüfen, ob Passwort korrekt ist
If rng.Offset(0, 1).Value <> txtPasswort.Value Then
'Benutzer benachrichtigen
MsgBox "Das Passwort ist nicht korrekt."
'Prozedur beenden
Exit Sub
End If
'Prüfen, ob Benutzer Admin ist
If rng.Offset(0, 2).Value = "Admin" Then
'Schleife über alle Tabellenblätter
For Each ws In ThisWorkbook.Worksheets
'Tabellenblatt einblenden
ws.Visible = xlSheetVisible
Next ws
ElseIf rng.Offset(0, 2).Value = "Benutzer" Then
'Schleife über alle Tabellenblätter
For Each ws In ThisWorkbook.Worksheets
'prüfen, der Blattnamen welche nicht eingblendet werden sollen
If ws.Name <> "System1" And ws.Name <> "Zugriffsrechte" And ws.Name <> "System 2" Then
'Tabellenblatt einblenden
ws.Visible = xlSheetVisible
End If
Next ws
End If
'UserForm schließen
Unload Me
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
'Prüfen, ob Schließen Button geklickt wurde
If CloseMode = vbFormControlMenu Then
'Excel Datei Schließen
ThisWorkbook.Close SaveChanges:=False
End If
End Sub
|