Supportnet / Forum / Tabellenkalkulation
UserForm OK-Button
Frage
Hallo zusammen,
ich hab mal ´ne Frage zum UserForm und der Eingabebestätigung:
Ich frage per CommandButton ein Passwort ab und habe dazu ein UserForm kreiert. Dort gibt es neben dem beschreibenden "Label" eine "TextBox", in die das Passwort eingetragen wird. Darunter befindet sich ein "CommandButton" mit "OK".
Wenn das Passwort eingegeben wird, muss man 2 x Enter drücken bevor die Abfrage ausgeführt wird. (Nach 1 x Enter springt die Markierung lediglich auf den "OK"-Button. Lässt sich das irgendwie so ändern, dass man die Eingabe nur mit 1 x Return abschließt? Der Quellcode ist angelehnt an Oliver (https://supportnet.de/threads/1460580).
Option Explicit
Private Sub UserForm_Initialize()
With TextBox1
.Text = " "
.PasswordChar = "*"
End With
End Sub
Private Sub CommandButton1_Click()
´ OK-Button
Const pw = "hallo"
If TextBox1.Text = pw Then
Anwendung starten
End If
Unload Me
End Sub
Private Sub CommandButton2_Click()
´Abbruch-Button
Unload Me
End Sub
Jemand ´ne Idee, wie man das hinkriegt????
Gruß René
Antwort 1 von Hajo_Zi
Hallo René,
ich kann Dein Problem nich nachvollziehen, vielleicht reicht es, wenn Du die Default Eigenschaft des CommandButton änderst.
Gruß Hajo
ich kann Dein Problem nich nachvollziehen, vielleicht reicht es, wenn Du die Default Eigenschaft des CommandButton änderst.
Gruß Hajo
Antwort 2 von Rene.N
Hallo Hajo,
also wenn ich (ohne Anführungszeichen) "hallo" eintippe und dann Enter drücke, springt mein Cursor auf die OK-Taste (funktioniert auch, wenn ich die Tab-Taste nutze). Dann muss ich nochmal Enter drücken und erst dann wird der OK-Befehl ausgeführt....
Klar könnte ich "hallo" eintippen und dann mit der Maus auf OK drücken. Das funktioniert ja sowieso. Sollte das bei dir wirklich anders sein, könnte ich dir ja mal die Datei schicken...
Gru René
also wenn ich (ohne Anführungszeichen) "hallo" eintippe und dann Enter drücke, springt mein Cursor auf die OK-Taste (funktioniert auch, wenn ich die Tab-Taste nutze). Dann muss ich nochmal Enter drücken und erst dann wird der OK-Befehl ausgeführt....
Klar könnte ich "hallo" eintippen und dann mit der Maus auf OK drücken. Das funktioniert ja sowieso. Sollte das bei dir wirklich anders sein, könnte ich dir ja mal die Datei schicken...
Gru René
Antwort 3 von coros
Hallo Rene,
das ist klar, dass Du mit Enter oder Tab, das nächste Objekt, das die nächste TabIndex-Nummer nach der TextBox hat, erst nur angewählt bekommst und dann nach einem weiteren Enter der Code, der hinter der Schaltfläche steht, ausgeführt wird.
Damit nach Eingabe und Betätigen der Entertaste der Code ausgeführt wird, musst Du den Tastenschlag in der TextBox auswerten. Das macht man mit dem TextBox1_KeyDown-Ereignis. Für jeden Tastenschlag auf der Tastatur wird eine Zahl zurückgegeben. Bei Enter ist es die Zahl 13. Diese Zahl musst Du in dem Ereignis abfragen. Im Klartext sieht das wie folgender Code aus. Kopiere den Code in das VBA-Projekt der UserForm.
Das war´s.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
das ist klar, dass Du mit Enter oder Tab, das nächste Objekt, das die nächste TabIndex-Nummer nach der TextBox hat, erst nur angewählt bekommst und dann nach einem weiteren Enter der Code, der hinter der Schaltfläche steht, ausgeführt wird.
Damit nach Eingabe und Betätigen der Entertaste der Code ausgeführt wird, musst Du den Tastenschlag in der TextBox auswerten. Das macht man mit dem TextBox1_KeyDown-Ereignis. Für jeden Tastenschlag auf der Tastatur wird eine Zahl zurückgegeben. Bei Enter ist es die Zahl 13. Diese Zahl musst Du in dem Ereignis abfragen. Im Klartext sieht das wie folgender Code aus. Kopiere den Code in das VBA-Projekt der UserForm.
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
Const pw = "hallo"
If TextBox1.Text = pw Then
Anwendung starten
End If
End SubDas war´s.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 4 von Rene.N
Hallo Oliver,
da kann ich nur sagen:
Genial einfach - Genial GUT!!!
Besten Dank dafür!
Apropos: ist dir noch was zu https://supportnet.de/threads/1463835
eingefallen???
Gruß René
da kann ich nur sagen:
Genial einfach - Genial GUT!!!
Besten Dank dafür!
Apropos: ist dir noch was zu https://supportnet.de/threads/1463835
eingefallen???
Gruß René

