2009-08-27 95 views
3

我爲Excel創建了一個宏,該宏將彈出包含按鈕和文本字段的窗體。有沒有辦法給按鈕分配熱鍵,例如'ctrl + Enter'或'F12'?無論焦點在哪個字段或按鈕上,熱鍵都可以工作。將熱鍵分配給爲excel創建的窗體上的按鈕vba

(到目前爲止我已成功地創建按鈕/ fields_Keydowns檢查MSForms.ReturnInteger爲vbKeyF12,但我必須這樣做,對於每一個領域和按鈕,有沒有更簡單的方法?)

說,我2對事物的形式,按鈕「CommandButton1的」文本框和「TextBox1的」關於按鈕

代碼:

Private Sub CommandButton1_click() 
ActiveCell.FormulaR1C1 = UserForm1.TextBox1.Text 
End Sub 

,當我在更多的領域和按鈕添加的熱鍵將是有益的......

如何設置'Escape'按鈕關閉/隱藏表單?

回答

5

設置'Escape'鍵激活您的按鈕以關閉/隱藏表單:首先,您需要一個Click事件隱藏表單的按鈕。然後將該按鈕的「取消」屬性設置爲True。

當您的表單被顯示,並且您按下Esc時,表單將關閉。

對於'HotKey',將按鈕的Accelerator屬性設置爲一個字母,然後當表單打開時,如果按Alt + [您的字母],則該按鈕的Click事件將被觸發。

+0

嗨,謝謝Stewbob。 '取消'屬性很有用! 對於熱鍵,alt + [letter]並不是我想要的。是否可以用Ctrl + Enter或F1-F12鍵來改變按鍵的熱鍵? – Yoga 2009-08-28 02:50:29

+1

不確定,您將不得不使用Accelerator屬性進行一些實驗。 – Stewbob 2009-08-28 13:25:17

1

做到這一點的唯一方法是添加KeyUp事件爲它調用中央鍵盤處理程序窗體的每個控件:

Option Explicit 

Private Sub CommandButton1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) 
    HandleKey KeyCode 
End Sub 

Private Sub CommandButton2_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) 
    HandleKey KeyCode 
End Sub 

Private Sub UserForm_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) 
    HandleKey KeyCode 
End Sub 

Private Sub HandleKey(KeyCode As MSForms.ReturnInteger) 
    MsgBox KeyCode 
    Select Case KeyCode 
    Case 112 'F1 
     'Do something because F1 was pressed 
    Case 113 'F2 
     'Do something because F2 was pressed 
    Case 114 'F3 etc. 
    End Select 
End Sub 
相關問題