为excel vba创build的表单上的button分配热键

我已经为excel创build了一个macros,它将popup包含button和文本字段的窗体。 有没有办法给button分配热键,例如“ctrl + Enter”或“F12”? 无论焦点在哪个字段或button上,热键都可以工作。

(到目前为止,我已经设法创buildbutton/ fields_Keydowns来检查vbKeyF12的MSForms.ReturnInteger,但是我必须对每个字段和button都这样做,有没有更简单的方法?)

说,我有两个东西的forms,button“CommandButton1”和文本框“TextBox1”

代码为button:

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

当我添加更多的字段和button时,热键将是有用的…

另外我如何设置“逃生”buttonclosures/隐藏表单?

要设置“Escape”键来激活你的button来closures/隐藏表单:首先,你需要一个Click事件隐藏表单的button。 然后将该button的“取消”属性设置为“真”。

当您的窗体显示,并按Esc时,窗体将closures。

对于“热键”,将button的加速器属性设置为一个字母,然后当表单打开时,如果按下Alt + [你的字母],则该button的Click事件将被触发。

唯一的方法是为表单的每个控件添加一个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