Hallo Bernd,
Dazu musst du zunächst ganz oben im Modul noch vor der ersten Sub auf eine API-Funktion referenzieren, die dir zurückgibt ob eine Taste gedrückt wurde.
Um den Code nun "anzuhalten" musst du in eine Dauerschleife "Do:Loop" gehen in der du den Tastendruck abfragst. Damit du gleichzeitig auch die Zelle wechseln kannst ist ebenfalls ein DoEvents nötig.
Wenn Pause oder E gedrückt wird springt er allerdings in die aktive Zelle und gibt das entsprechende Zeichen ein. Um das zu verhindern wird oben im Code die Standardfunktion mit Application.OnKey ausgeschaltet und unten wieder eingeschaltet.
Insgesamt sieht der Code dann etwa so aus:
Declare PtrSafe Function GetAsyncKeyState Lib "user32.dll" (ByVal vKey As Long) As Integer
Sub Test()
Dim Keypress1 As Boolean, Keypress2 As Boolean
Application.OnKey "{" & vbKeySpace & "}", ""
Application.OnKey "{" & vbKeyE & "}", ""
'... Dein Einstiegscode
'Warteschleife bis Tastendruck
Do
Keypress1 = CBool(GetAsyncKeyState(vbKeySpace))
Keypress2 = CBool(GetAsyncKeyState(vbKeyE))
DoEvents
Loop Until Keypress1 Or Keypress2
If Keypress1 Then
GoTo Start
ElseIf Keypress2 Then
GoTo Ende
End If
Start:
'... Dein weiterer Code
Ende:
Application.OnKey "{" & vbKeySpace & "}"
Application.OnKey "{" & vbKeyE & "}"
End Sub
Gruß Mr. K.
|