Autor
|
Thema: Tastatur auslesen (5329 mal gelesen)
|
Wyndorps Ehrenmitglied V.I.P. h.c. Ingenieur
Beiträge: 4563 Registriert: 21.07.2005
|
erstellt am: 05. Dez. 2011 17:44 <-- editieren / zitieren --> Unities abgeben:
Hallo und schönen Abend Ihr Spezialisten. Ich habe eine Userform mit mehreren CommandButton (CB), Label etc. Unter anderem habe ich CBs für RECHTS, LINKS, RAUF und RUNTER. Mit der Maus funktioniert angeklickt das auch sehr gut. Nun möchte ich die CB für RECHTS, LINKS, RAUF und RUNTER aber auch über die Pfeiltasten direkt ansprechen. Ich weiß leider nicht, wo und wie ich die Tastatur auslesen kann. Die keypress- oder keyup-Eigenschaft der Userform bringen kein Ereignis. Bei Benutzen der Pfeiltasten schaltet in der Userform einfach der Rahmen immer ein CB weiter.
------------------ ---------------- "Ich stimme mit der Mathematik nicht überein. Ich meine, daß die Summe von Nullen eine gefährliche Zahl ist." (Stanislaw Jerzy Lec) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 05. Dez. 2011 18:37 <-- editieren / zitieren --> Unities abgeben: Nur für Wyndorps
Hallo & erstmal dito!;-) Keypress geht wohl nur mit 'normalen' Tasten, nicht mit Funktionstasten.
Code: Private Sub CommandButton1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) MsgBox "Keycode: " & KeyCode & " Shift: " & Shift End Sub
(vbkeydown/-up/-left/-right müsste auch klappen statt des Ints) Grüße Nancy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Wyndorps Ehrenmitglied V.I.P. h.c. Ingenieur
Beiträge: 4563 Registriert: 21.07.2005
|
erstellt am: 05. Dez. 2011 19:29 <-- editieren / zitieren --> Unities abgeben:
Ok, das habe ich nicht gut genug ausgedrückt, denn das mit dem Code für die Pfeiltasten kannte ich. Die Userform besteht aus vielen verschiedenen Buttons, Labes, Frames, die an und ausgeschaltet werden und eben auch den Pfeil-Buttons aus dem Bild. Ich möchte, egal was gerade auf der Userform aktiv ist, die Tastatur abfragen. Mit anderen Worten: Zu jeder Zeit (während kein Code abläuft) soll durch die Pfeiltasten die zugehörige Aktion ausgeführt werden. In Deinem Code muss ein bestimmter CommandButton1 aktiv sein, dass darauf die Tastatur abgefragt wird. Bei mir läuft aber mit
Code: Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) ... End Sub
nur der Rahmen der Reihe nach durch die ganzen Buttons, aber ich bekomme kein Ereignis zurückgemeldet. Ich weiß nicht, wie ich an das Ereignis der Tastatureingabe überhaupt kommen kann.Ich hoffe, es ist jetzt klarer. ------------------ ---------------- "Ich stimme mit der Mathematik nicht überein. Ich meine, daß die Summe von Nullen eine gefährliche Zahl ist." (Stanislaw Jerzy Lec) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 05. Dez. 2011 21:33 <-- editieren / zitieren --> Unities abgeben: Nur für Wyndorps
Hab jetzt einiges probiert, bekomms aber auch nicht hin;-( Im VB ginge das wohl mit Form1. KeyPreview auf true, aber eine Userform hat leider nicht diese Eigenschaft. Einzige Ausnahme wo es geht, ist in einer völlig jungfräulichen Userform (also ohne jedwede Controls), hier wird tatsächlich auf Tastaturereignisse reagiert. Wird dir aber so glaub nicht weiter helfen, vielleicht kommen ja noch paar Ideen. lg Nancy -- 'Hi, my name is Annie Key - Please don't hit me' Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Wyndorps Ehrenmitglied V.I.P. h.c. Ingenieur
Beiträge: 4563 Registriert: 21.07.2005
|
erstellt am: 06. Dez. 2011 09:09 <-- editieren / zitieren --> Unities abgeben:
Uuups. Nicht ganz das Ergebnis, dass ich erwartet hatte. [OT] Als alter VB6-Anwender bin ich dann doch überrascht, wie stark die VBA-Einschränkungen scheinbar sind. Trotzdem Danke! ------------------ ---------------- "Ich stimme mit der Mathematik nicht überein. Ich meine, daß die Summe von Nullen eine gefährliche Zahl ist." (Stanislaw Jerzy Lec) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 06. Dez. 2011 17:20 <-- editieren / zitieren --> Unities abgeben: Nur für Wyndorps
|
Torsten Niemeier Ehrenmitglied V.I.P. h.c. Maschinenbau Ingenieur
Beiträge: 3543 Registriert: 21.06.2001 "ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform ** CSWP 04/2011 ** ** CSWE 08/2011 **
|
erstellt am: 12. Dez. 2011 01:39 <-- editieren / zitieren --> Unities abgeben: Nur für Wyndorps
|
Wyndorps Ehrenmitglied V.I.P. h.c. Ingenieur
Beiträge: 4563 Registriert: 21.07.2005
|
erstellt am: 12. Dez. 2011 18:07 <-- editieren / zitieren --> Unities abgeben:
Herzlichen Dank für den Hinweis. Ich weiß zwar nicht einmal, was eine API ist, aber eventuell probiere ich das aus dem verlinkten Beitrag einmal aus. Ich habe nur die Sorge, dass dann bei Office2011 schon wieder Schluß ist mit er Programmnutzung. Ich habe jetzt als Notlösung die Pfeile als CommandButtons für die Maus realisiert, allerdings kann man mit der Tastatur sehr viel schneller hämmern, als mit der Maus. Als Alternative dazu habe ich eine erweiterte Schrittweitenlösung relaisiert: Einmal rechts klicken dx=1, beim nächsten Rechts dx=2, dann dx=5, dann dx=10... Beim Wechsel auf anderen Button geht es wieder von vorne los. ------------------ ---------------- "Ich stimme mit der Mathematik nicht überein. Ich meine, daß die Summe von Nullen eine gefährliche Zahl ist." (Stanislaw Jerzy Lec) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |