如何将按键事件分配给用户窗体?
How to assign keydown events to a userform?
我想要特定的键(Enter、Right Arrow、Esc)来执行不同的程序。
我有以下代码,但没有任何效果。我尝试设置 KeyPreview = True,但这似乎没有任何改变。
Sub UserForm1_KeyDown(ByVal KeyAscii As MSForms.ReturnInteger, ByVal Shift As Integer)
Select Case KeyAscii
Case 13 'enter key
addBtn_Click
Case 39 'right arrow
skipBtn_Click
Case 27 'escape key
exitBtn_Click
Case Else
End Select
End Sub
更新
克里斯提到(下面)它应该以 class 命名,重新调整名称有助于修复我的表单中的其他一些小错误。但是,我 运行 遇到了一个问题,即在单击命令按钮时打开用户窗体,运行 宁或单击它会给我一个 1004 错误。
Private Sub blocksSorter_Click()
Load UserForm1
UserForm1.Show
End Sub
无论您如何命名您的用户窗体,事件始终具有名称 Userform_event
,如评论之一所述。并且您必须将代码放入用户窗体的 class 模块中。在这种情况下
Sub UserForm_KeyDown(ByVal KeyAscii As MSForms.ReturnInteger, ByVal Shift As Integer)
Select Case KeyAscii
Case 13 'enter key
addBtn_Click
Case 39 'right arrow
skipBtn_Click
Case 27 'escape key
exitBtn_Click
Case Else
End Select
End Sub
这篇 article 对用户表单进行了很好的概述和介绍
我想要特定的键(Enter、Right Arrow、Esc)来执行不同的程序。
我有以下代码,但没有任何效果。我尝试设置 KeyPreview = True,但这似乎没有任何改变。
Sub UserForm1_KeyDown(ByVal KeyAscii As MSForms.ReturnInteger, ByVal Shift As Integer)
Select Case KeyAscii
Case 13 'enter key
addBtn_Click
Case 39 'right arrow
skipBtn_Click
Case 27 'escape key
exitBtn_Click
Case Else
End Select
End Sub
更新
克里斯提到(下面)它应该以 class 命名,重新调整名称有助于修复我的表单中的其他一些小错误。但是,我 运行 遇到了一个问题,即在单击命令按钮时打开用户窗体,运行 宁或单击它会给我一个 1004 错误。
Private Sub blocksSorter_Click()
Load UserForm1
UserForm1.Show
End Sub
无论您如何命名您的用户窗体,事件始终具有名称 Userform_event
,如评论之一所述。并且您必须将代码放入用户窗体的 class 模块中。在这种情况下
Sub UserForm_KeyDown(ByVal KeyAscii As MSForms.ReturnInteger, ByVal Shift As Integer)
Select Case KeyAscii
Case 13 'enter key
addBtn_Click
Case 39 'right arrow
skipBtn_Click
Case 27 'escape key
exitBtn_Click
Case Else
End Select
End Sub
这篇 article 对用户表单进行了很好的概述和介绍