如何将列表框中选定的每个项目另存为字符串

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

我有一个包含 5 个项目的列表框(参见屏幕截图)。对于所选的每个项目,我希望将其保存为字符串,以便我可以在代码下方使用它们。我有一个循环,但它将所选项目用逗号分隔。不过我想要单独的字符串。如何修改此循环以在循环时将每个 varItem 保存为字符串?

Dim strParameters, varItem, strComma as string
strComma = ","
For Each varItem In Me!LstParameters.ItemsSelected
        strParameters = strParameters & Me!LstParameters.ItemData(varItem)
        strParameters = strParameters & strComma
        Next varItem
        strParameters = CStr(Left$(strParameters, Len(strParameters) - 1))

这是我的列表框。我希望 2 个选定的项目单独位于一个字符串中。

vba ms-access listbox
1个回答
0
投票

使用允许通过键名称引用项目的集合或字典 - 数组则不允许。以集合为例,字典基本上是相同的。

Sub BuildCollection()
Dim colS As Collection, varItem As Variant
Set colS = New Collection
'Build 5-item collection
colS.Add Null, "strRiverDepth"
colS.Add Null, "strRiverFlow"
colS.Add Null, "strTurbidity"
colS.Add Null, "strVolume"
colS.Add Null, "strSomething"
'populate collection items with listbox selections
For Each varItem In Me.LstParameters.ItemsSelected
    colS("str" & Me.LstParameters.ItemData(varItem)) = Me.LstParameters.ItemData(varItem)
Next varItem
'do something with collection items
Debug.Print colS("strRiverDepth")
Debug.Print colS("strRiverFlow")
Debug.Print colS("strTurbidity")
Debug.Print colS("strVolume")
Debug.Print colS("strSomething")
End Sub

选择示例的调试输出将类似于:
河流深度
河流


无需预先构建集合。可以在列表框循环中使用

colS.Add
。然后,集合将仅包含所选项目的数量。
colS.Add Me.LstParameters.ItemData(varItem), "str" & Me.LstParameters.ItemData(varItem)

另一种方法是声明 5 个变量,然后在列表框循环内使用

Select Case
结构来确定要填充哪个变量。

strItem = Me.LstParameters.ItemData(varItem)
Select Case strItem
    Case "RiverDepth"
         strRiverDepth = strItem
    Case "RiverFlow"
         strRiverFlow = strItem
    Case "Turbidity"
         strTurbidity = strItem
    Case "Volume"
         strVolume = strItem
    Case "Something"
         strSomething = strItem
End Select

不,不能动态构造变量名。做不到:

"str" & strItem = strItem

如果您希望其他过程或模块可以使用集合或变量,请在模块头中将它们声明为公共/全局。

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