我在 Excel VBA 中创建了一个用户窗体,其中有一个未绑定的列表框,其 MultiSelect 属性设置为“扩展”。当该列表框通过单击列表项以外的任何方式获得焦点时,该列表中的所有项目都会显示,周围带有虚线焦点矩形。
下面是一些代码,显示了另一个列表框旁边的现象,其中 MultiSelect 设置为 Single 以进行比较。创建一个用户窗体,在其上放置两个列表框,然后将代码添加到窗体中。当您启动表单时,在列表框之间切换即可查看我所描述的内容。
Private Sub UserForm_Activate()
ListBox1.MultiSelect = fmMultiSelectSingle
ListBox2.MultiSelect = fmMultiSelectExtended
Dim i As Integer
For i = 1 To 15
ListBox1.AddItem String(i, Chr(i + 64))
ListBox2.AddItem String(i, Chr(i + 64))
Next
End Sub
Run Code Online (Sandbox Code Playgroud)
有没有办法删除焦点矩形或防止它们出现?
谢谢,
我在 Excel 2010 中对您的代码进行了实验,并证实了您的观察结果。如果我创建两个列表框,输入提供的代码,启动表单并按 Tab 键将焦点放在 ListBox2 上,则所有行周围都会出现虚线。
如果我像以前一样创建两个列表框,手动将ListBox2/Properties/Multiselect设置为2 - fmMultiSelectExtended,运行并切换到 ListBox2 ,讨厌的行就会消失。
对我来说,这是相当稳定的,表单现在可以承受多个窗口激活更改、来回跳转等。
别问我为什么...