我有一个包含 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 个选定的项目单独位于一个字符串中。
使用允许通过键名称引用项目的集合或字典 - 数组则不允许。以集合为例,字典基本上是相同的。
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
如果您希望其他过程或模块可以使用集合或变量,请在模块头中将它们声明为公共/全局。