Siehe auch: | Commandbutton - Eigenschaften | 

Autor: Peter Haserodt  --- Aus Excel VBA - Gruppe: Häufige Fragen

Passwort abfragen

Autor: Peter Haserodt - Erstellt: --      - Letzte Revision: --
Passwortabfrage realisieren

Man möchte gerne vom Anwender ein Passwort abfragen. Selbstverständlich soll dies aber bei der Eingabe maskiert sein (z.B. nur Sternchen erscheinen).
Dies kann man mit einer Inputbox nicht realisieren - wir brauchen eine Userform dafür.


Vorbereitung:

Erstellen Sie eine Userform mit dem Namen frmPasswort.
Darauf 2 Commandbuttons mit den Namen cmdEscape und cmdOk,
sowie ein Textfeld mit dem Namen txtPasswort.
Beschriften Sie die Commandbuttons noch entsprechend.
Dann brauchen wir noch ein allgemeines Modul

Die Codes für beide stehen im nächsten Kasten. Die Erklärung folgt dann darunter.



' **************************************************************
'  Modul:  mdlPasswortAbfrage  Typ = Allgemeines Modul
' **************************************************************

Option Explicit

Public Sub GetPasswort()
Dim sPass As String
If frmPasswort.PasswortUebergabe(sPass) Then
	' User hat auf OK geklickt
	MsgBox sPass
Else
	MsgBox "Abgebrochen"
End If
End Sub


' **************************************************************
'  Modul:  frmPasswort  Typ = Userform
' **************************************************************

Option Explicit
Dim bOk As Boolean

Private Sub cmdOK_Click()
bOk = True ' Flag setzen, dass Ok ausgelöst wurde
Unload Me
End Sub

Public Function PasswortUebergabe(ByRef DasPasswort As String) As Boolean
Me.Show
If bOk Then
	DasPasswort = txtPasswort ' Was im Textfeld steht
	PasswortUebergabe = True ' der User hat OK ausgelöst
Else
	PasswortUebergabe = False ' Der User hat nicht OK ausgelöst
End If
End Function

Private Sub cmdEscape_Click()
Unload Me
End Sub

Private Sub UserForm_Initialize()
'Nachfolgendes kann man auch in den Eigenschaften der Steuerelemete setzen
cmdOK.Default = True ' Auf Default setzen
cmdEscape.Cancel = True ' bei ESC auslösen
txtPasswort.PasswordChar = "*" ' Als Passwortfeld und * als Passwortzeichen
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Me.Hide ' Wir beschleunigen das ausblenden der Userform
DoEvents
End Sub

Die Erklärung:

Die Sub GetPasswort ist unsere Startprozedur. Hier machen wir gleich mal was ganz besonderes, denn wir starten die Userform über eine Funktion der Userform. Diese gibt uns dann entsprechendes zurück. Als Argument übergeben wir eine Stringvariable, die das eingegebene Passwort erhalten soll.
Durch den Aufruf wird die Userform geladen - aber noch nicht angezeigt!

Im Initialize der Userform setzen wir die Eigenschaften unserer Commandbuttons und der Textbox.
Diese könnten Sie genauso vorher per Hand setzen.

In der Function sorgen wir erstmal dafür, dass unsere Userform auch angezeigt wird.
Der weitere Ablauf in der Function bleibt nun solange "stehen" bis unsere Userform den Unloadbefehl erhält, entweder durch einen Klick auf einen unserer Buttons oder durch ein Klick auf das X oder oder ...

Klickt der User auf OK setzen wir die Variable bOK auf true um zu wissen, dass er OK geklickt hat.
Wird nun die Userform Entladen - wird unsere Funktion noch weiter abgearbeitet.
Je nach bOK reagieren wir dort.
Ist bOK = True geben wir dem Argument der Funktion den Inhalt des Textfeldes und setzen die Funktion auf True ansonsten wird einfach nur die Funktion auf False gesetzt.

Jetzt wird in der Startprozedur ausgewertet:
Ist der Rückgabewert der Funktion = True, geben wir die Eingabe in das Passwortfeld aus, ansonsten wissen wir, der Anwender hat nicht auf OK geklickt.

Interner Tipp:
Eine Excel Schulung von einem Profi ist Gold wert!
Peter Haserodt bietet Ihnen das und noch viel mehr...
Mehr dazu unter: Schulung

Selbstverständlich können Sie dieses Beispiel noch beliebig verändern oder erweitern.
Eine Möglichkeit wäre, beim Klick auf OK zu prüfen ob der Anwender überhaupt was eingegeben hat, usw.

Ein Beispiel:


Private Sub cmdOK_Click()
If Len(txtPasswort.Text) < 5 Then
	MsgBox "Passwort muss mindestens 5 Zeichen haben"
	txtPasswort.SetFocus
	Exit Sub
End If
bOk = True ' Flag setzen, dass Ok ausgelöst wurde
Unload Me
End Sub

Sie sehen, da sind Ihnen keine Grenzen gesetzt.


Weitere Artikel der Gruppe: Häufige Fragen Aus Excel VBA
Nach oben
ToDo
Google Werbung