Supportnet Computer
Planet of Tech

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

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é

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.

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 Sub


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.

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é