Supportnet / Forum / Anwendungen(Java,C++...)
VBA und KeyDown Event
Frage
Hi!
In einem Formular soll man mit der Taste F1 immer die Hilfe aufrufen können. Diese Taste soll immer funktionieren, egal ob ich ein Textfeld o.ä. markiert habe. Ich habe schon mit der KeyDown Methode experimentiert und wenn ich die für en Textfeld anlege funktioniert das so wie es soll. Das Problem ist also, wie richte ich die Taste so ein, dass sie global im Benutzerformular funktioniert??
Ich hab es auf diese Art probiert:
-----------------------------------
Private Sub prnt_KeyDown(ByVal KeyCode As MSForms.ReturnInteger)
If (KeyCode = vbKeyF1) Then
help.Show
End If
End Sub
-----------------------------
prnt und help sind Formulare.
Beim kompilieren kommt folgender Fehler:
"Mehrdeutiger Name: prnt_KeyDown"
Wo liegt der Fehler??
Antwort 1 von PotzBlitz
Hallo Filburt,
du musst sicherstellen, dass das Ereignis "prnt_KeyDown" nur EINMAL in diesem Modul vorhanden ist. Der Meldung nach ist dieses Ereignis zweimal vorhanden.
Ausserdem stimmt die Deklaration des Ereignisses nicht, sie müsste richtig lauten:
Gruss
PotzBlitz
du musst sicherstellen, dass das Ereignis "prnt_KeyDown" nur EINMAL in diesem Modul vorhanden ist. Der Meldung nach ist dieses Ereignis zweimal vorhanden.
Ausserdem stimmt die Deklaration des Ereignisses nicht, sie müsste richtig lauten:
Private Sub prnt_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)Gruss
PotzBlitz
Antwort 2 von Filburt
Hallo PotzBlitz!
Beim Experimentieren hab ich wohl etwas zuviel reingeschrieben... Der Eintrag war doppelt...
Jetzt kann ich zwar alles wieder aufrufen ohne Fehlermeldung, dennoch reagiert die Taste F1 nicht.
Beim Experimentieren hab ich wohl etwas zuviel reingeschrieben... Der Eintrag war doppelt...
Jetzt kann ich zwar alles wieder aufrufen ohne Fehlermeldung, dennoch reagiert die Taste F1 nicht.
Antwort 3 von Filburt
und nochmal hoch
Antwort 4 von PotzBlitz
Hallo Filburt,
hast du schon mal in Betracht gezogen, eine richtige Hilfe-Datei für dein Projekt zu erstellen, z.B. als kompilierte HTML-Hilfe?
In so einer Hilfedatei hat jeder Eintrag eine eindeutige ID. In einem VBA-Projekt hat dagegen jedes Steuerelement die Eigenschaft HelpContextID, welche die dazugehörige ID aus der Hilfedatei für dieses Steuerelement speichert. Wenn du dem Projekt auch noch die Hilfedatei im Menü Extras | Eigenschaften von <Projektname> nennst, dann wäre das alles, was zu tun ist. Bei jedem Druck auf F1 wird dann die dazugehörige Hilfe aus deiner eigenen Hilfedatei geöffnet.
Wenn du daran interessiert bist, dann schau dir bei Microsoft HTML Help Workshop an, dort gibt es auch einen kostenlosen Download der Software.
Gruss
PotzBlitz
hast du schon mal in Betracht gezogen, eine richtige Hilfe-Datei für dein Projekt zu erstellen, z.B. als kompilierte HTML-Hilfe?
In so einer Hilfedatei hat jeder Eintrag eine eindeutige ID. In einem VBA-Projekt hat dagegen jedes Steuerelement die Eigenschaft HelpContextID, welche die dazugehörige ID aus der Hilfedatei für dieses Steuerelement speichert. Wenn du dem Projekt auch noch die Hilfedatei im Menü Extras | Eigenschaften von <Projektname> nennst, dann wäre das alles, was zu tun ist. Bei jedem Druck auf F1 wird dann die dazugehörige Hilfe aus deiner eigenen Hilfedatei geöffnet.
Wenn du daran interessiert bist, dann schau dir bei Microsoft HTML Help Workshop an, dort gibt es auch einen kostenlosen Download der Software.
Gruss
PotzBlitz
Antwort 5 von Filburt
Hi Potzblitz,
das ist der HTML Hilfe ist ne klasse Sache, damit hab ich mich noch gar nicht so beschäftigt. Werde mir das aber auf jeden Fall mal näher anschauen.
Ich hatte allerdings vor noch einige andere Tasten mit Funktionen zu belegen, weil ich mir Mausklickerei etwas sparen wollte. Selbst wenn ich mir die Variable KeyCode nur in einer MsgBox ausgeben lasse reagiert das Formular nicht. Wird allerdings die Funktion auf einen Button oder ein Textfeld angewandt gibt es keine Probleme. In VB hab ich dann nochmal probiert, da geht das auch so wie ich das wollte. Naja aus lauter Bequemlichkeit hatte ich vor, das ganze eben auch in ein VBA-Modul bei Word einzubauen.
Trotzdem nochmal Danke für die Hilfe.
MfG Filburt
das ist der HTML Hilfe ist ne klasse Sache, damit hab ich mich noch gar nicht so beschäftigt. Werde mir das aber auf jeden Fall mal näher anschauen.
Ich hatte allerdings vor noch einige andere Tasten mit Funktionen zu belegen, weil ich mir Mausklickerei etwas sparen wollte. Selbst wenn ich mir die Variable KeyCode nur in einer MsgBox ausgeben lasse reagiert das Formular nicht. Wird allerdings die Funktion auf einen Button oder ein Textfeld angewandt gibt es keine Probleme. In VB hab ich dann nochmal probiert, da geht das auch so wie ich das wollte. Naja aus lauter Bequemlichkeit hatte ich vor, das ganze eben auch in ein VBA-Modul bei Word einzubauen.
Trotzdem nochmal Danke für die Hilfe.
MfG Filburt
Antwort 6 von pixelpeter
sollte mit keydown eigentlich funktionieren.
das problem ist sicherlich, dass du wenn du mehrere steuerelemente in einer form plaziert hast die keydown prozedur von alllen elementen einschliesslich der form auswerten musst. alle steuerelemente haben ein eigenes keydown event.
das problem ist sicherlich, dass du wenn du mehrere steuerelemente in einer form plaziert hast die keydown prozedur von alllen elementen einschliesslich der form auswerten musst. alle steuerelemente haben ein eigenes keydown event.
Antwort 7 von Filburt
Naja, ob sich der Aufwand für mein kleines Modul wirklich lohnt bezweifle ich. Aber für größere Sachen werd ich mir das mal merken. Danke für eure Hilfe. MfG Filburt

