如何在excel VBA中同时多选多个列表框
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在excel VBA中同时多选多个列表框相关的知识,希望对你有一定的参考价值。
脚本
我有两个名为openItemList
和serialNumber
的列表框。 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
模式时同时选择两个列表框?
目前,这是两个列表框的行为方式。我选择一个列表框的那一刻,另一个列表框的相应值也会突出显示。
当我改为Multiselect时,它的行为如下,没有任何同时选择
你必须:
- 使用
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()
以配对列表框可见元素
以上是关于如何在excel VBA中同时多选多个列表框的主要内容,如果未能解决你的问题,请参考以下文章
Access VBA 如何根据多选列表框中的选择过滤记录集?
当未从多个选择框之一中选择项目时,基于 Access 中的多个“多个选择列表框”的 VBA 查询