5

我为 excel 创建了一个宏,它将弹出包含按钮和文本字段的表单。有没有办法为按钮分配诸如“ctrl+Enter”或“F12”之类的热键?无论焦点在哪个字段或按钮上,热键都应该起作用。

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

说,我在表单上有两件事,按钮“CommandButton1”和文本字段“TextBox1”

按钮代码:

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

当我添加更多字段和按钮时,热键会很有用......

另外我如何设置“退出”按钮来关闭/隐藏表单?

4

2 回答 2

7

要设置“Escape”键以激活您的按钮以关闭/隐藏表单:首先,您需要一个按钮,其 Click 事件会隐藏您的表单。然后将该按钮的“取消”属性设置为 True。

当您的表单显示并按 Esc 时,表单将关闭。

对于“热键”,将按钮的 Accelerator 属性设置为一个字母,然后当您的表单打开时,如果您按 Alt+[您的字母],该按钮的 Click 事件将触发。

于 2009-08-27T12:42:09.763 回答
3

唯一的方法是为表单的每个控件添加一个 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
于 2016-08-18T05:14:29.260 回答