【发布时间】:2016-12-15 22:33:04
【问题描述】:
我遇到了列表框在 Excel 表单上的行为方式的问题。重现问题的步骤:
- 使用一个列表框控件创建用户表单
-
在此用户表单中使用以下代码:
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) Me.ListBox1.Locked = True Me.ListBox1.Locked = False End Sub Private Sub UserForm_Initialize() Dim i As Integer For i = 1 To 10 Me.ListBox1.AddItem i Next i End Sub
当表单首次显示时,我可以使用箭头键和翻页键正常浏览列表框。但是,在触发双击事件后,所有键盘导航都不起作用,包括切换到其他控件(如果它们在表单上)。单击列表框似乎确实有效,并且焦点轮廓显示正确,但是列表框锁定然后解锁后处理焦点的方式有问题。怎么回事?
使用 Office 2013 32 位版本。
【问题讨论】:
-
并不是说这特别有用,但我也在使用 Office 2013 32 位版本,并且它在 Excel 中正确运行。
-
你的意思是双击后可以通过键盘选择列表框上的项目?
-
@A.S.H.你的答案去哪儿了?在尝试了您的代码后,我注意到使列表框不可见会将焦点移到下一个控件。如果没有可用的制表位控件,则焦点再次“挂起”,使列表框的
.SetFocus方法成为强制性的。因此,看起来避免这个键盘“挂起”的最可靠方法是将焦点移动到另一个控件,然后将其设置回列表框。 -
是的,我可以在双击后使用键盘选择列表框上的项目。
-
@OpiesDad 呵呵,那么有些不同了。在工作中运行 Windows 7 32 位,在家里运行 Office 2016 / Windows 10 64 位,并且在两台机器上都 100% 重复。
标签: excel forms vba listbox locked