4

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

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

谢谢,

4

1 回答 1

1

我已经在 Excel 2010 中试验了您的代码并确认了您的观察。如果我创建两个列表框,输入提供的代码,启动表单并按 Tab 键聚焦在 ListBox2 上,虚线出现在所有行周围。

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

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

不要问我为什么...

于 2012-11-29T13:39:47.590 回答