如何在excel VBA中同时多选多个列表框

问题描述 投票:0回答:1

脚本

我有两个名为openItemListserialNumber的列表框。 serialNumber条目是openItemList每一行的唯一数字。这意味着每个openItemList都有一个独特的serialNumber。但是openItemList可以在不同的行中具有重复值。用户只能理解openItemList,他们选择了这个。由于各自的serialNumber也基于openItemList选择进行选择,我的程序通过使用serialNumber作为搜索词标准找到相关的行数据并相应地更新正确的行。

目前我可以同时选择两个列表框,因为我将multiselect属性设置为单个条目。我使用以下代码来执行此操作

Private Sub openItemList_Click()
    serialNumber.ListIndex = openItemList.ListIndex
End Sub

Private Sub openItemList_Scroll()
    serialNumber.TopIndex = openItemList.TopIndex
End Sub

Private Sub serialNumber_Click()
    openItemList.ListIndex = serialNumber.ListIndex
End Sub

Private Sub serialNumber_Scroll()
    openItemList.TopIndex = serialNumber.TopIndex
End Sub

当前的问题

现在我想让用户在列表框中选择多行,以便用户可以一次更新多行。当我将两个列表框的属性更改为MultiSelectExtended时,选择依赖性不再有效。因此,我无法再根据serialNumber搜索相应的行。任何人都知道如何在更改为MultiSelectExtended模式时同时选择两个列表框?

目前,这是两个列表框的行为方式。我选择一个列表框的那一刻,另一个列表框的相应值也会突出显示。

enter image description here

当我改为Multiselect时,它的行为如下,没有任何同时选择

enter image description here

excel vba excel-vba listbox multi-select
1个回答
1
投票

你必须:

  • 使用Change事件而不是Click事件
  • 匹配两个列表框每个元素Selected属性:

如下:

Private Sub openItemList_Change()
    Dim i As Long
    With openItemList
        For i = 0 To .ListCount - 1
            serialNumber.Selected(i) = .Selected(i)
        Next
    End With
End Sub

另外,将openItemList_Scroll()更改为openItemList_MouseDown()以配对列表框可见元素

© www.soinside.com 2019 - 2024. All rights reserved.