Tastatureingaben auswerten

Also ich möchte ein Programm schreiben, welches beim tippen einer bestimmten taste irgentetwas macht (in dem beispiel mal eine msgbox erscheinen lassen)

Also heir ist der Code

Sub keydown(keycode As Integer)
MsgBox
If keycode = vbKeyG Then
MsgBox "bla"
End If
End Sub

Weiß eienr, warum das nicht funktioniert?
 
Soll die Sub "keydown" die Funktion sein, die von der Form bei Tastendruck ausgelöst werden soll? Dann muss sie "Form_KeyDown" heißen.
 
Zuletzt bearbeitet:
Hab ne andere methode gefunden, damit lassen sich aber nicht alle tasten "erkennen" kennt jemand ne bessere:


Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

If GetAsyncKeyState(Asc("e")) < 0 Then
msgbox "e-Taste wurde gedrückt"
 
Code:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If VBA.Chr$(KeyCode) = "e" Then MsgBox "Taste e gedrückt"
End Sub
Zusätzlich noch die KeyPreview-Eigenschaft der Form auf True stellen.
Damit lassen sich alle Tasten außer F11, F12, "Print" und "Scroll Lock" abfragen.
 
Warum nicht die Ascii-Tabelle nutzen ?

Code:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

If KeyCode = 71 Then
    MsgBox "bla...."
End If

End Sub

Funktioniert einwandfrei !
 
Zuletzt bearbeitet:
Hmm also das mit der ascii tabelle funktioniert bei mir nur bei den buchstaben, die auch immer als großbuchstaben erkannt werden.Die kleinbuchstaben und sonderzeichen liegen dann auf den f tasten und dem nummernblock.....
 
So ich hab'S jetzt ans laufen gebracht, aber mit der keypressed funktion, die ist besser, leider ist mir jetzt aufgefallen, dass das nur funktioniert, wenn die form auch "angeklickt ist"

Kennt jemand ne andere methode?
 
Die Keypress-Methode wird nur ausgewertet, wenn das entsprechende Element den Focus hat (was bei Dir durch das Anklicken der Form geschieht).

Du kannst folgendermaßen den Focus in Deinem Programm auf die Form setzen:

Code:
Form1.SetFocus     ' Statt Form1 den Namen Deiner Form einsetzen

Wenn der Nutzer ein anderes Steuerelement Deiner Form anklickt, müsstest Du so den Focus in der entsprechenden Routine wieder auf die Form setzen.
 
Zuletzt bearbeitet:
Das würde aber bedeuten, das die Form permanent den Focus erhält, und eventuell
Eingaben erschwert würden.

Ich würde das Keypress Ereignis über ein Modul auslagern, und dann beim Change Event abfangen.
 
Zurück