Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Userform Passwort

Userform Passwort
27.10.2005 19:46:19
Dominik
ausgangslage:
zuerst soll über eine userform (passwort) das gültige passwort abgefragt werden. wenn dieses falsch eingegeben worden ist soll beendet werden, sonst weiter und das aktuelle blatt löschen.
Problem:
wenn dann passwort falsch eingegeben wurde, wird "fertig" nicht ausgewählt und das tabellenblatt wird trotzdem gelöscht, anstatt "exit sub" abzubrechen.
eingegeben in ein normales modul:
Sub TabDel()
'Userform Passwort anzeigen
Passwort.Show
' Tabellenblatt löschen
ActiveSheet.Delete
Fertig: Exit Sub
End Sub
eingegeben in die userform "Passwort":
Const Passw = "Test"

Private Sub CommandButton1_Click()
If TextBox1.Value = Passw Then
Unload Me
Else
Label2.Visible = True
GoTo Fertig
End If
End Sub


Private Sub UserForm_Initialize()
Dim frm As UserForm
Set frm = Passwort
frm.TextBox1.PasswordChar = "X"
frm.TextBox1.SetFocus
frm.Label2.Visible = False
End Sub

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Userform Passwort
27.10.2005 20:36:34
Matthias
Hallo Dominik,
Nimm ein Userform mit
- Label1 (Bezeichnung "Passwort:")
- TextBox1 (Eigenschaft PasswordChar: "X")
- CommandButton1 (OK)
- CommandButton2 (Abbrechen)
und diesen Code fürs Userform:

Option Explicit
Dim pw()
Dim pwList As Boolean
'Button "OK"
Private Sub CommandButton1_Click()
Dim i As Integer, found As Boolean
If pwList Then
For i = 0 To UBound(pw)
If TextBox1 = pw(i) Then found = True: Exit For
Next i
If Not found Then
MsgBox "falsches Kennwort!"
TextBox1 = ""
TextBox1.SetFocus
Exit Sub
End If
End If
Unload Me
End Sub
'Button "Abbrechen"
Private Sub CommandButton2_Click()
TextBox1 = ""
Unload Me
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then TextBox1 = ""
End Sub
Public Function GetPassword(Optional arr) As String
If IsMissing(arr) Then
pwList = False
Else
If TypeName(arr) = "String" Then
pwList = True
ReDim pw(0)
pw(0) = arr
Else
pwList = True
ReDim pw(UBound(arr))
pw = arr
End If
End If
Me.Show
GetPassword = TextBox1
End Function

Dann in ein Modul:

Sub TabDel()
'Userform Passwort anzeigen
If Passwort.GetPassword("Test") = "" Then Exit Sub
' Tabellenblatt löschen
ActiveSheet.Delete
End Sub


Die Routine ist auch für mehrere Kennwörter geschrieben, die man in einem Array übergeben kann:
If Passwort.GetPassword(Array("Test", "123")) = "" Then Exit Sub
Dann gingen die Passwörter "Test" und "123".

Gruß Matthias
Anzeige
AW: Userform Passwort
27.10.2005 20:39:21
Luschi
Hallo Dominik,
mach es so:

'in ein normales modul:
Public passOK As Boolean
Sub TabDel()
'Userform Passwort anzeigen
Passwort.Show
If passOK Then
'Passwort ist richtig
'Tabellenblatt löschen
ActiveSheet.Delete
Else
'Passwort ist falsch
'Mache was anderes oder nichts
End If
End Sub
eingegeben in die userform "Passwort":
Const Passw = "Test"
Private Sub CommandButton1_Click()
If TextBox1.Value = Passw Then
passOK = True
Else
passOK = False
Label2.Visible = True
End If
Unload Me
End Sub
Gruß von Luschi
aus klein-Paris
Anzeige
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Userform Passwort in Excel VBA erstellen


Schritt-für-Schritt-Anleitung

Um eine Userform für die Passwortabfrage in Excel zu erstellen, folge diesen Schritten:

  1. Userform erstellen:

    • Öffne den VBA-Editor (ALT + F11).
    • Füge eine neue Userform hinzu.
    • Platziere ein Label (z.B. "Passwort:"), eine TextBox (TextBox1) und zwei CommandButtons (OK und Abbrechen) auf der Userform.
    • Setze die Eigenschaft PasswordChar der TextBox auf "X".
  2. Code für die Userform:

    • Füge den folgenden Code in das Userform-Modul ein:
    Option Explicit
    Const Passw = "Test"
    
    Private Sub CommandButton1_Click()
       If TextBox1.Value = Passw Then
           passOK = True
           Unload Me
       Else
           passOK = False
           Label2.Visible = True
       End If
    End Sub
    
    Private Sub CommandButton2_Click()
       Unload Me
    End Sub
    
    Private Sub UserForm_Initialize()
       Label2.Visible = False
       TextBox1.SetFocus
    End Sub
  3. Code im Modul:

    • Füge den folgenden Code in ein normales Modul ein:
    Public passOK As Boolean
    
    Sub TabDel()
       Passwort.Show
       If passOK Then
           ActiveSheet.Delete
       Else
           MsgBox "Passwort falsch. Das Tabellenblatt wurde nicht gelöscht."
       End If
    End Sub

Häufige Fehler und Lösungen

  • Fehler: Das Tabellenblatt wird trotz falschem Passwort gelöscht.

    • Stelle sicher, dass der passOK-Wert nur auf True gesetzt wird, wenn das Passwort korrekt eingegeben wurde. Überprüfe den Code im CommandButton1.
  • Fehler: Die Userform schließt sich nicht.

    • Überprüfe, ob die Unload Me-Anweisung im richtigen Block steht und dass die Userform richtig initialisiert wurde.

Alternative Methoden

Eine alternative Methode zur Passwortabfrage ist die Verwendung von Arrays, um mehrere Passwörter zu verwalten. Hier ist ein Beispiel:

Public Function GetPassword(Optional arr) As String
    Dim pwList As Boolean
    Dim pw()
    If IsMissing(arr) Then
        pwList = False
    Else
        pwList = True
        ReDim pw(UBound(arr))
        pw = arr
    End If
    Me.Show
    GetPassword = TextBox1
End Function

Verwende dann im Modul:

If Passwort.GetPassword(Array("Test", "123")) = "" Then Exit Sub

Praktische Beispiele

Ein einfaches Beispiel für die Implementierung der Userform könnte so aussehen:

  1. Passwort "Test" wird eingegeben.
  2. Bei erfolgreicher Eingabe wird das aktive Tabellenblatt gelöscht.
  3. Bei falscher Eingabe wird eine Fehlermeldung angezeigt.

Nutze den oben beschriebenen Code, um diese Funktionalität in deiner Excel-Datei zu implementieren.


Tipps für Profis

  • Sicherheit erhöhen: Vermeide es, Passwörter im Klartext im Code zu speichern. Du könntest Hash-Funktionen verwenden, um die Sicherheit zu erhöhen.
  • Benutzerfreundlichkeit: Füge eine Funktion hinzu, die es ermöglicht, das Passwort zurückzusetzen, falls es vergessen wurde.
  • Fehlermeldungen anpassen: Gestalte die Fehlermeldungen benutzerfreundlicher und informiere den Benutzer über die Fehlerursache.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Passwörter hinzufügen?
Du kannst ein Array von Passwörtern an die Funktion GetPassword übergeben, wie im Beispiel gezeigt.

2. Welche Excel-Version benötige ich?
Die beschriebenen Funktionen sind in Excel VBA verfügbar, daher solltest du eine Version verwenden, die VBA unterstützt (z.B. Excel 2010 und neuer).

3. Was tun, wenn die Userform nicht angezeigt wird?
Überprüfe, ob die Subroutine TabDel aufgerufen wird und dass keine Syntaxfehler im Code vorhanden sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige