Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1848to1852
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

HotKeys in Userform

HotKeys in Userform
11.10.2021 18:13:38
Thomas
Hallo zusammen,
ich möchte gerne in einer bereits geöffneten Userform Textboxen (oder auch Checkboxen) mit Hilfe eines Shortcuts auswählen. Ich möchte zum Beispiel, wenn die Userform geöffnet ist, "Alt + 1" drücken um die erste Textbox auszuwählen. Wenn ich meine Werte dort eingegeben habe, möchte ich "Alt + 2" drücken um zu Textbox 2 auszuwählen.
Mir sind dabei 2 Dinge wichtig:
1. Die Shortcuts sollen Kombinationen sein; also bestenfalls mit "Alt", "Strg", oder "Shift" und einer Zahl funktionieren, damit es intuitiv und schnell bleibt
2. Die Shortcuts sollen funktionieren, egal wo ich mich in der Userform befinde. Möchte ich zum Beispiel zu Textbox 3 mit "Alt + 3" soll das möglich sein, egal ob ich gerade in Textbox 1 bin, Checkbox 5 geklickt, oder einen Commandbutton ausgewählt habe.
Ich habe es schon mit Application.Onkey versucht, aber feststellen müssen, dass es bei Userformen nicht funktioniert (Wenn ich das richtig versanden habe).
Ich habe noch eine andere Methode gefunden mit Userform_Keydown(), weiß aber nicht, wie ich sie zum Laufen kriege, oder ob es überhaupt funktioniert.
Wenn mir jemand erklären könnte, wie ich zum Beispiel folgenden Code ausführe, wenn Textbox 1 ausgewählt ist. würde mir das sehr helfen. (und vielleicht auch, wie es funktioniert, wenn eine Checkbox ausgewählt ist, aber mit der Textbox wäre mir schon unglaublich geholfen)

Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyControl Then
MsgBox "Strg wurde gedrückt"
End If
End Sub
Darauf aufbauend die Frage:
Könnte ich während ich in einer Textbox bin zum Beispiel durch drücken von "Strg" ein Makro aufrufen, in dem die einzelnen "Tastenkombinationen" aufgeführt sind? Ich gehe bisher davon aus, dass ich für jede Textbox etc. jede Tastenkombination zuweisen muss Code haben muss und so könnte ich das "abkürzen" und übersichtlicher halten. Application.Onkey habe ich in dem Beispiel genutzt um es anschaulicher zu machen.

Private Sub ZugewieseneTasten()
' Application.Onkey habe ich in dem Beispiel genutzt um es anschaulicher zu machen.
Application.OnKey "{1}", Textbox1.Select
Application.OnKey "{2}", Textbox2.Select
Application.OnKey "{3}", Textbox3.Select
End Sub
Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyControl Then
ZugewieseneTasten
End If
End Sub

Ich habe bei meiner Suche auch diesen Thread gefunden:
https://www.herber.de/forum/archiv/156to160/159120_Onkey_in_Userform.html
Ich kann hier aber leider die Codes nichts sehen. In englischsprachigen Foren habe ich auch nichts passendes finden können.
Kann mir jemand bei dem Problem Helfen?
Gruß
Thomas

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

Betreff
Datum
Anwender
Anzeige
AW: HotKeys in Userform
11.10.2021 21:30:06
Daniel
Hi
das OnKey gibts da nicht.
das KeyDown-Event ist schon das richtige.
Hier kannst du abfragen, welche reguläre Taste gedrückt wurde (Wert der Variable KeyCode) und welche Steuertaste dabei gehalten wurde (Variable Shift)
damit kannst du dann entscheiden; was gedrückt wurde:

IF Shift = 4 AND KeyCode = 49 Then Textbox1.SetFocus
IF Shift = 4 AND KeyCode = 50 Then Textbox2.SetFocus
IF Shift = 4 AND KeyCoce = 51 Then Textbox3.SetFocus
damit das überall in der Userform funktioniert, brauchst du das im KeyDown-Event jedes Steuerlements, incl der Userform selbst.
Damit du den Code nicht jedesmal schreiben musst, kannst du ihn in eine Sub auslagern und die zwei Werte übergeben:
als ganzes in etwa so, für weiter Steuerlemente dann entsprechend ergänzen:

Option Explicit
Private Sub TasteGedrückt(KeyCode, Shift)
If Shift = 4 Then
If KeyCode = 49 Then TextBox1.SetFocus
If KeyCode = 50 Then TextBox2.SetFocus
If KeyCode = 51 Then TextBox3.SetFocus
End If
End Sub
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
TasteGedrückt KeyCode, Shift
End Sub
Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
TasteGedrückt KeyCode, Shift
End Sub
Private Sub TextBox3_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
TasteGedrückt KeyCode, Shift
End Sub
Private Sub TextBox4_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
TasteGedrückt KeyCode, Shift
End Sub
Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
TasteGedrückt KeyCode, Shift
End Sub
Gruß Daniel
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige