焦点矩形出现在 VBA 中的所有列表框项目上

Phi*_*l R 5 excel vba

我在 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)

有没有办法删除焦点矩形或防止它们出现?

谢谢,

Mik*_*keD 2

我在 Excel 2010 中对您的代码进行了实验,并证实了您的观察结果。如果我创建两个列表框,输入提供的代码,启动表单并按 Tab 键将焦点放在 ListBox2 上,则所有行周围都会出现虚线。

如果我像以前一样创建两个列表框,手动将ListBox2/Properties/Multiselect设置为2 - fmMultiSelectExtended,运行并切换到 ListBox2 ,讨厌的行就会消失。

对我来说,这是相当稳定的,表单现在可以承受多个窗口激活更改、来回跳转等。

别问我为什么...