首页 > 解决方案 > Excel-VBA UserForm ListBox - 如何在不选择的情况下突出显示选项

问题描述

简而言之:

什么等同于Me.ListBox1.Selected(2) = True但用于突出显示而不是选择?(突出显示可能是错误的词,但我确信我之前在这种情况下已经看到过 - 选项周围的轮廓框而不是实际选择它)

** 试过 **

Me.ListBox1.ListIndex = 2

也不做任何事情。

With Me.ListBox1
    saveVal = .List(0)
    .Value = ""
    .Value = saveVal
End With

给我一个错误说“无效的属性值”

背景:

为什么我需要在某些项目/盒子上单击两次?

我有一个用户表单,ListBox其中有几个是通过逐个添加项目来填充的,效果很好。

设置已ListBox更改为MultiSelect=1 - fmMultiSelectMultiListStyle=1 - fmListStyleOption

问题是当第一次尝试在某些框上选择一个选项时,它只是突出显示它而不选择它,而在其他框和其他尝试中,它可能会或可能不会立即选择一个选项。它似乎不是同一个罪魁祸首,而且有点随机 - 它与我单击选项的位置有关吗?在项目文本而不是项目框上?为什么它适用于某些而不适用于其他?

在我在一个框中选择一个选项后,它允许我通过单击选择任何其他选项,这是所需的行为。

我找到了一个链接,有人建议这种行为是因为工作簿损坏,但我不认为是这样。我刚刚在用户表单中创建了一本带有 1 个列表框的新书,更改为所需的设置,复制了 6 次列表框,将列表源作为 rand() 放在 A:G 列中,我仍然遇到同样的问题。

编辑:我的计划是“突出显示”每个框上的顶部选项,以便第一次单击框除了选择之外别无选择(因为某些内容已经突出显示)...

标签: vbaexcellistboxuserform

解决方案


解决我的初始问题的技巧似乎是在填充每个要设置的列表之后,.ListIndex = 0但这仅在使用后才有效.SetFocus

解决了!(目前,我认为)

尽管这并没有突出显示任何内容,但它允许我第一次选择一些东西而不会失败。


推荐阅读