【发布时间】:2019-07-29 13:47:41
【问题描述】:
我有一个多选列表框,当更新 cbo 框(选择出借人的名称)时,该列表框会填充连接值(由出借项目的项目 ID 号和项目名称组成)。
基本上,我希望能够回忆或参考每个选定列表项的第一个连接值。以下代码是我尝试将列表框的值保存在数组中,同时尝试仅调用每个选择的第一个串联值。
此代码起作用,但由于某种原因,它只调用最后选择的值。例如,如果选择了以下列表框项; "1:Anthropometric Tape Measure" 和 "2:Anthropometric Measuring Kit" 然后报告的值(在 msgbox 中用于故障排除)是 "2,2" 如果最后选择了第二项,而不是 "1,2"。
奇怪的是,如果我使用数组代码而不只引用第一个连接值,(tmpArray(selCount) = lbox.List(i) 而不是Split(lbox.List(lbox.ListIndex), ":")(0))代码正常运行。
非常感谢任何有关解决此问题的建议,谢谢!
Public Function GetSelectedItems(lbox As Object)
Dim tmpArray() As Variant
Dim i As Integer
Dim selCount As Integer
selCount = -1
For i = 0 To lbox.ListCount - 1
If lbox.Selected(i) = True Then
selCount = selCount + 1
ReDim Preserve tmpArray(selCount)
tmpArray(selCount) = Split(lbox.List(lbox.ListIndex), ":")(0)
End If
Next
If selCount = -1 Then
GetSelectedItems = ""
Else:
GetSelectedItems = Join(tmpArray, ", ")
End If
End Function
我正在使用以下代码将数组召回到消息框(仅供参考)。
Dim mySentence As String
mySentence = GetSelectedItems(Me.ListItem)
Msg = "You selected" & vbNewLine & mySentence
【问题讨论】: