2017-01-20 3 views
5

Je voudrais avoir mon propre fichier d'aide dans mon programme Excel.forme VBA arrête modeless Touches de fonction

Dans le

Private Sub Workbook_Open() 

Je

Application.OnKey "{F1}", "Help" 

Cela fonctionne quand je suis sur la feuille Excel, mais ma demande est basée sur une userform principale qui est affichée en plein écran modales.

Lorsque le formulaire utilisateur est visible, il bloque la touche F1 d'une manière ou d'une autre et la macro ne se déclenche pas.

Je pensais que les formes modales ne bloquent pas l'exécution de code.

Les conseils comment puis-je faire ce travail?

Répondre

5

Vous devez intercepter l'événement keyDown sur l'objet UserForm lui-même. Lorsque l'objet UserForm a le focus, quelle que soit la touche que vous appuyez sur il va à l'UserForm.

'/UserForm1 is a sample name. 

Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) 
    If KeyCode = 112 Then '/ F1 
     Call Help 
    End If 
End Sub 
+1

Le code est utile. – harun24hr

+0

N'a pas pensé à ce sujet. Merci Malheureusement, cela ne fonctionne pas, J'ai essayé de piéger 'Keydown'' KeyUp' et 'KeyPress'. Aucun d'eux n'est renvoyé lorsque j'utilise le clavier avec le formulaire affiché en plein écran. On dirait que la forme ne soit pas mise au point. De l'begening. Il y a un formulaire affiché en plein écran. Couple d'images sur un formulaire et un grand cadre avec quelques contrôles. C'est tout. – Sphinx