VBA Excel使用列表框项填充单个单元格

时间:2014-03-29 01:50:27

标签: excel vba excel-vba

如何在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

2 个答案:

答案 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