对于每个控件,使用Esc关闭userform而不使用control_KeyPress()命令

时间:2018-04-16 15:24:27

标签: excel excel-vba userform vba

在这个答案中,它显示可以通过为每个可以关注的控件设置control_KeyPress()子来使用Esc关闭Excel用户表单 - Close userform with escape button

我已经开始工作,但我有几个菜单,每个菜单都有很多控件。我尝试将这个例程放在一个按钮上,但并不总是快速选中/导航回特定按钮。

我正在寻找一种方法来制作它,以便我

  1. 不必为每个可以关注的控件创建control_KeyPress()子
  2. 或者,可以以不同的方式实现相同的目标(使用esc关闭userform)
  3. 谢谢!

3 个答案:

答案 0 :(得分:3)

我的想法是在窗体上创建一个命令按钮,将cancel属性设置为true并将width和height设置为0.将以下代码添加到不可见按钮。

Private Sub CommandButton1_Click()
    Hide
End Sub

将可见属性保留为true

enter image description here

答案 1 :(得分:0)

创建一个小按钮,例如6 x 6,以便它可以看到,但不显眼地放置在窗体的一个角落。将它设为小可以阻止显示标题,只留下一个整洁的小方块。

创建一个按钮(例如BTXX),然后设置:

  • 取消=真,以便按退出键“按下”此按钮
  • TabStop = False,因此表单中的标签不会停在按钮上
  • Caption =“Esc”提醒
  • 按钮的内容

在onclick事件中使用:

Private Sub BTXX_Click()
    Unload Me
End Sub

在此示例中,通过设置Top = 0和Left = 0,转义按钮在窗体的左上角“隐藏”。 (见下图)。

Userform Properties

答案 2 :(得分:0)

如果您已经有一个关闭用户窗体的按钮,那么您只需将其cancel属性设置为true即可。然后通过按下escape来触发它,保持可点击状态,保持其加速器并保持Tab键顺序。您只能有一个取消= True的按钮,属性编辑器会自动处理此事。