如何在 excel VBA 中同时选择多个列表框
How to multiselect more than one listbox simultaneously in excel VBA
场景
我有两个名为 openItemList
和 serialNumber
的列表框。 serialNumber
条目是 openItemList
的每一行的唯一编号。这意味着每个 openItemList
都有一个唯一的 serialNumber
。但是 openItemList
可以在不同的行中有重复的值。用户只能理解 openItemList
而他们 select 这个。由于相应的 serialNumber
也 select 基于 openItemList
selection,我的程序通过使用 serialNumber
作为搜索词标准来查找相关的行数据并更新正确的行因此。
目前我可以同时 select 两个列表框,因为我将 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
当前问题
现在我想让用户在列表框中 select 多行,以便用户可以一次更新多行。当我将两个列表框的 属性 更改为 MultiSelectExtended
时,selection 依赖项不再起作用。因此,我无法再根据 serialNumber
搜索相应的行。任何人都知道如何在更改为 MultiSelectExtended
模式时同时 select 两个列表框?
目前这是两个列表框的行为方式。当我选择一个列表框时,另一个列表框的相应值也会突出显示。
当我切换到 Multiselect 时,它的作用如下,没有任何同步 selection
你必须:
使用 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()
以配对列表框可见元素
场景
我有两个名为 openItemList
和 serialNumber
的列表框。 serialNumber
条目是 openItemList
的每一行的唯一编号。这意味着每个 openItemList
都有一个唯一的 serialNumber
。但是 openItemList
可以在不同的行中有重复的值。用户只能理解 openItemList
而他们 select 这个。由于相应的 serialNumber
也 select 基于 openItemList
selection,我的程序通过使用 serialNumber
作为搜索词标准来查找相关的行数据并更新正确的行因此。
目前我可以同时 select 两个列表框,因为我将 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
当前问题
现在我想让用户在列表框中 select 多行,以便用户可以一次更新多行。当我将两个列表框的 属性 更改为 MultiSelectExtended
时,selection 依赖项不再起作用。因此,我无法再根据 serialNumber
搜索相应的行。任何人都知道如何在更改为 MultiSelectExtended
模式时同时 select 两个列表框?
目前这是两个列表框的行为方式。当我选择一个列表框时,另一个列表框的相应值也会突出显示。
当我切换到 Multiselect 时,它的作用如下,没有任何同步 selection
你必须:
使用
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()
以配对列表框可见元素