Excel 使用Esc关闭userform而不使用control_KeyPress()命令对每个控件执行控制
在这个答案中,通过为每个可以聚焦的控件设置一个control_KeyPress()子控件,可以使用Esc关闭Excel userforms 我已经让它工作了,但是我有几个菜单,每个菜单都有一些控件。我试着将这个例程放在一个按钮上,但tab/nav返回到特定按钮并不总是很快 我正在寻找一种方法,这样我Excel 使用Esc关闭userform而不使用control_KeyPress()命令对每个控件执行控制,excel,userform,vba,Excel,Userform,Vba,在这个答案中,通过为每个可以聚焦的控件设置一个control_KeyPress()子控件,可以使用Esc关闭Excel userforms 我已经让它工作了,但是我有几个菜单,每个菜单都有一些控件。我试着将这个例程放在一个按钮上,但tab/nav返回到特定按钮并不总是很快 我正在寻找一种方法,这样我 不必为每个可以对焦的控件创建control_KeyPress()子控件 或者,可以以不同的方式实现相同的目标(使用esc关闭用户表单) 谢谢 我的想法是在表单上创建一个命令按钮,将cancel属性设
谢谢 我的想法是在表单上创建一个命令按钮,将cancel属性设置为true,并将宽度和高度设置为0。将以下代码添加到“不可见”按钮
Private Sub CommandButton1_Click()
Hide
End Sub
将visible属性保留为true
创建一个小按钮,例如6 x 6,使其可以在窗体的一个角落中看到,但不易被发现。将其设置为如此之小会阻止标题的显示,只会留下一个整洁的小正方形 创建一个按钮(例如BTXX),并设置:
- Cancel=True,以便按escape键“按下”此按钮
- TabStop=False,以便在表单中进行tab操作不会在按钮上停止
- Caption=“Esc”作为按钮用途的提醒
Private Sub BTXX_Click()
Unload Me
End Sub
在本例中,通过设置top=0和left=0,转义按钮在窗体的左上角被“隐藏”。(见下图)
如果您已经有一个用于关闭userform的按钮,那么只需将其cancel属性设置为true即可。然后按escape键触发,保持可单击状态,保持其加速器并保持选项卡顺序。您只能有一个Cancel=True的按钮,属性编辑器会自动处理这个问题。。但要做到这一点,你必须点击那个按钮取消,对吗?我试图避免使用鼠标。不,因为我将cancel属性设置为true。按Escape键将运行按钮后面的代码。或者换句话说,按Escape就像点击按钮。啊,我不知道它是这样工作的,但它确实是这样。谢谢作为使按钮高度/宽度=0的替代方法:使userform更大,将按钮拖动到正常视图之外的某个位置,然后将userform大小拖动回正常值。这将使按钮隐藏在视图之外,同时让您在出于任何原因需要时找到它。