您检索records("Pillar")
哪个是一串 -分隔的|
数字。然后Split()
将该字符串放入一个数组中。关键是选择其值与这些数组成员之一匹配的每个列表框行。
但是,我认为您实际上并不需要数组。|
在该字符串的开头和结尾添加 a 应该更容易,然后用于InStr()
检查包含在|
字符中的列表框值是否存在于修改后的字符串中。
这种描述可能难以理解。看看这个来自即时的例子是否阐明了这一点。
cstrPillar = "1|2|3"
? "|" & cstrPillar & "|"
|1|2|3|
strListBoxValue = "3"
? "|" & strListBoxValue & "|"
|3|
? InStr(1, "|" & cstrPillar & "|", "|" & strListBoxValue & "|")
5
如果这是有道理的,这就是我在命令按钮的单击事件中应用它的方式。请注意,我使用字符串常量 ,cstrPillar
作为您使用 动态检索的字符串的代理records("Pillar")
。我将我的多选列表框命名为lstPillar
.
Private Sub cmdSelectRows_Click()
Const cstrPillar As String = "1|2|3"
Dim i As Long
For i = 0 To (Me.lstPillar.ListCount - 1)
Me.lstPillar.Selected(i) = ( _
InStr(1, _
"|" & cstrPillar & "|", _
"|" & Me.lstPillar.ItemData(i) & "|") > 0)
Next
End Sub
该单击事件的效果是选择与 1、2 或 3 匹配的列表框行,并取消选择所有其他行。
我意识到这个Me.lstPillar.Selected(i)
陈述可能具有挑战性。我能建议的最好的方法是参考即时窗口示例,并希望它足够清楚。