仅单击一次时,宏列表框将选择4个列表框项

时间:2017-08-06 19:57:16

标签: vba excel-vba listbox excel

当我点击多选列表框中的第一项时,我看到一些非常奇怪的行为。第一次单击会触发要单击的项目以及周围的4个项目。

enter image description here

Many selected

所以我挖掘了为什么并添加了一些代码来监听列表框选择更改事件,只添加选择更改的侦听器而没有代码使其消失。

Private Sub AllListBox_SelectedIndexChanged

然而,它经常随机回来。我不知道为什么会发生这种情况,也许它与多重选择有关?通过循环遍历页面上的每个标头并将其添加为值,以编程方式添加这些值。

Dim InList As Boolean
For Each col In Range(DataRangeBox.Value).Cells
    'Find the row with the headers on it
    If col.row = Range(DataRangeBox.Value).Cells(1).row Then
        'Add item to all available list box
        If IsNull(AllListBox) Then
            AllListBox.AddItem col.Text
        End If
    End If
Next col

我想知道它是否与所讨论的问题类似here。我想知道是否明确添加索引将解决问题?如果有人对此有任何想法,我很想知道。它真的很奇怪。

enter image description here One selected now

2 个答案:

答案 0 :(得分:0)

解决了我的问题。

在列表框属性上有属性" Multiselect"而且我注意到它是在" fmMultiSelectSingle"当我遇到问题时我知道我把它放在" MultiSelectExtended"当我创建它时的设置。所以我玩了它,一旦我把它放在我想要的那个上,我没有看到问题。我也可以通过制作" fmMultiSelectSingle"来可靠地重现它。

答案 1 :(得分:0)

我遇到了同样的问题:通常,第一次(仅)单击列表框中的一个项目,我会看到选择了4个项目(单击了一个,下面有3个)。对我来说,列表框的Multiselect属性已正确设置为MultiSelectExtended,因此没有上面描述的内容。我已经确认没有代码会设置listbox属性,否则,我尝试将属性手动更改为Single,然后再更改为Extended,但问题仍然存在。

我在选项卡上有问题的列表框。打开表单/屏幕后,用户在一个选项卡中工作,然后再单击另一个选项卡。 (使用列表框转到此选项卡时,将运行一些简短的代码。)

我的解决方案: 今天,我决定添加代码以在用户单击该选项卡后在列表框上使用 SetFocus (在当前运行的简短代码的末尾)。因此,在我第一次单击列表中的任何项目之前,将焦点放在listobx上。这解决了我的多选问题!现在,仅正确选择了列表中单击的项目。

我希望这个想法可以帮助其他人遇到这个古怪的问题。