Mittels gut programmierten VBA-Code kann man sich viele routinemäßigen Arbeiten ersparen, wie zum Beispiel das automatische Speichern von E-Mail-Anhängen. Und mit VBA-Formularen kann man Benutzereingaben, wie zum Beispiel den zugehörigen Speicherort abfragen.
Da wäre es doch nur sinnvoll, wenn man sich weitere Mausklicks ersparen kann und anstelle des Klicks auf den OK-Button oder Abbrechen-Button diesen direkt mit der Enter-Taste bzw. Return-Taste auszuführen. Dies erhöht die Usability und den Arbeitsfluss ungemein.
So kann man zum Beispiel mit der Enter-Taste ein VBA-Formular schließen. Oder man möchte mit der Enter-Taste direkt einen CommandButton betätigen, wie dieser im UserForm genannt wird, und den dahinterliegenden VBA-Code ausführen.
Key-Event und KeyCode für Enter-/Return-Taste
Dazu muss man das Key-Event für die Enter-/Return-Taste abfangen im jeweiligen UserForm-Element. Das heißt, wenn ich mich zum Beispiel in einem Textfeld (Textbox) befinde, weil ich dort Eintragungen gemacht habe, dann muss ich für diese Textbox das KeyDown-Event abfangen und prüfen, welche Taste gedrückt worden ist. Das heißt wiederum, dass, wenn man mehrere Formularelemente (Textboxes, Checkboxes, etc.) hat, man für jedes Formularelement das KeyDown-Ereignis abfangen muss.
Der zu verwendende KeyCode für die Enter-/Return-Taste ist “13”.
VBA-Code für KeyDown-Ereignis
Implementieren kann man nun das ganze mit dem folgenden VBA-Code:
'KeyDown-Ereignis für eine konkrete Textbox namens "MeineTextBox"
Private Sub MeineTextBox_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
'Tasten-Code 13 entspricht Enter-/Return-Taste auf der Tastatur
If KeyCode = 13 Then
'hier entsprechende Click-Methode für den CommandButton verwenden
btnOkay_Click
End If
End Sub
' Methode die bei Klick auf OK-Button ausgeführt wird
Private Sub btnOkay_Click()
Debug.Print "VBA-Code für Okay-Button wird ausgeführt"
End Sub
Die Namensbildung für die KeyDown-Methode erfolgt nach einem konkreten Prinzip. Man muss den Namen der Textbox verwenden, den man in der Entwurfumgebung vergeben hat, in diesem Fall “MeineTextBox” gefolgt von _KeyDown. Daraus wird dann also MeineTextBox_KeyDown.
Über die If-Anweisung überprüft man nun noch, ob die gedrückte Taste auf der Tastatur den Code “13” hat und ruft dann die Methode auf, welche normalerweise beim Klick auf den jeweiligen CommandButton ausgeführt wird. In diesem Beispiel ist es die Methode btnOkay_Click.
Und schon hat man sich wieder einen unnötigen Mausklick gespart ohne die Fingerlein von der Tastatur zu nehmen. Noch mehr Benutzerfreundlichkeit lässt sich erreichen indem man den Formularelement, wie CommandButtons, Tastenkombinationen der Form Alt+Buchstabe zuweist.