如何在VBA中使用逗号分隔符将列表框中的所有项目传递到单个单元格?
这是我当前的代码,我将每个项目传递给一个数组,然后将单元格值设置为数组,但它不起作用。
Dim histReturn() As Long
Dim j As Integer
For j = 0 To Me.history_lbx.ListCount - 1
ReDim Preserve histReturn(j)
Dim x As Variant
For Each x In histReturn
Cells(i, 4).Value = Cells(i, 4).Value & x & ", "
Next x
答案 0 :(得分:2)
根本不需要循环。您可以使用Join
创建逗号分隔列表,例如
Sub Demo
Dim rng as Range
Set rng = Cells(1, 1)
If history_lbx.ListCount = 0 Then
rng = vbNullString
Else
rng = Join(Application.Transpose(history_lbx.List), ",")
End If
End Sub
答案 1 :(得分:1)
如果你想使用数组,你不应该在循环中重新开始,而是一劳永逸,因为你知道维度:ReDim histReturn(history.ListCount)
。但是你的数组永远不会得到任何值,所以当你的第二个循环尝试在其中找到ListBox项时,它不能。
这是一个想法,循环获取ListBox项,添加到String,然后将结果放入Cell。
Dim S As String
If history_lbx.ListCount = 0 Then
Cells(1, 1).Value = ""
Else
S = history_lbx.List(0)
For i = 2 To history_lbx.ListCount
S = S & ", " & history_lbx.List(i - 1)
Next i
Cells(1, 1).Value = S
End If