Supportnet Computer
Planet of Tech

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:
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.

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

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

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.

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