title image


Smiley Re: Tastatureingabe abfragen (VBA)
Hallo Uwe,



Dein Hinweis brachte mich wohl in die richtige Richtung. Es scheint keine Möglichkeit zu geben, zur Laufzeit eine Taste "einfach mal so" abzufangen. Das Ereignis muss immer an ein Objekt gebunden sein.

Habe mich einstweilen für ein UserForm entschieden, welches keinerlei Steuerelemente enthält, sondern nur den Hinweis, dass man eine Taste drücken oder mit der Maus drauf klicken soll.



Folgenden Testcode habe ich fabriziert:





      

Public TasteGedrueckt As Boolean



Sub AbfrageTasteGedrueckt()

    UserForm1.Show

    Do

        DoEvents

        If TasteGedrueckt = True Then

            weiter = MsgBox("Weiter machen?", 36)

            If weiter <> 6 Then Exit Do

            TasteGedrueckt = False

        End If

        'Hier kommt die Aktion hin, die durchgeführt bzw.

        'unterbrochen werden soll, z.B. folgender Quatsch:

       [A1] =[A1] + 1

    Loop

    TasteGedrueckt = False

    UserForm1.Hide

End Sub 





Code eingefügt mit Syntaxhighlighter 3.0





Im UserForm1 steht folgender Code:





      

Private Sub UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

    TasteGedrueckt = True

End Sub



Private Sub UserForm_Click()

    TasteGedrueckt = True

End Sub 





Code eingefügt mit Syntaxhighlighter 3.0







Das funktioniert im Testlauf ganz gut. Allerdings bin ich leicht verunsichert durch den Hinweis in der VBA-Hilfe:



Vorsicht°°°Jedesmal wenn Sie die Steuerung zeitweise innerhalb einer Ereignisprozedur an den Prozessor abgeben, sollten Sie sicherstellen, daß die Prozedur nicht von einem anderen Teil des Codes aufgerufen wird, bevor der erste Aufruf beendet ist. Die Folgen eines solchen Aufrufs sind nicht vorhersehbar. Führen Sie DoEvents auch dann nicht aus, wenn Sie nicht ausschließen können, daß andere Anwendungen in irgendeiner Weise eine Verbindung mit der Prozedur herstellen, während das Betriebssystem die Ausführung steuert.



Es wird außerdem empfohlen, lieber mit einem Zeitgeber zu arbeiten. Werde mich noch weiter beschäftigen mit dem Thema.



Nochmals Danke!



Ralf





Wichtige Ergänzung!

Im UserForm1 muss die Eigenschaft ShowModal auf False gesetzt werden, sonst funktioniert es nicht!








mfg

Ralf

Der Computer löst Probleme, 
die es ohne ihn nicht gäbe!



geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: