Excel VBA - 从数组中填充多列用户窗体列表框。当阵列仅具有1个项目

问题描述:

没有数据我有以下功能,即时通讯使用来填充从数组数据用户窗体列表框:Excel VBA - 从数组中填充多列用户窗体列表框。当阵列仅具有1个项目

Function PopulateListboxWithArray(lstbox As MSForms.ListBox, var As Variant) 

With lstbox 

    If Not IsEmpty(var) Then 
    .Clear 
     .list = Application.Transpose(var) 
     .ListIndex = -1 
    End If 

End With 

End Function 

我的列表框包含两列具有以下属性:

enter image description here

问题

在数组中的数据具有ID柱和LastName列。我不想让用户看到ID列,所以我在表单中将列宽设置为0。

当我导入具有多行的数据时,数据按预期显示在列表框中。

但是,当数组只包含一行数据时,列表框显示空白!

我已经尝试删除上图中的列宽,当我这样做并重新导入一行数据时,我得到ID和姓氏堆叠在另一个之上。但是,这不是我想要的结果。

我甚至试图用.list = var代替.list = Application.Transpose(var)无济于事。

我在这里做错了什么,还是有更好的方式来填充列表框?

欢呼

我已经找到了答案在这个岗位:Adding item in listbox with multiple columns

我需要使用.List物业我的函数现在看起来是这样的:

Function PopulateListboxWithArray(lstbox As MSForms.ListBox, var As Variant) 

With lstbox 

    If Not IsEmpty(var) Then 
      .Clear 
     If UBound(var, 2) > 0 Then 
      .list = Application.Transpose(var) 
     Else 
      .AddItem var(0, 0) 
      .list(.ListCount - 1, 1) = var(1, 0) 
     End If 

    End If 

End With 

End Function 

编辑添加更多“背景”

不太确定你为什么使用应用程序n.Transpose()

With lstbox 
     If Not IsEmpty(var) Then 
      .Clear 
      If UBound(var, 1) = 1 Then 
       .AddItem 
       .List(0, 0) = var(1, 1) 
       .List(0, 1) = var(1, 2) 
      Else 
'    .List = Application.Transpose(var) 
       .List = var 
      End If 
      .ListIndex = -1 
     End If 
    End With 

,我通过以下方式填充var

Private Sub UserForm_Initialize() 
    Dim var As Variant 

    With Worksheets("LB") '<--| change "LB" to your actual sheet name 
     var = .Range("B1", .Cells(.rows.Count, "A").End(xlUp)).Value '<--| populate var with columns "A:B" cells values from row 1 down to column "A" last non empty row 
    End With 
    With Me.ListBox1 
     .ColumnCount = 2 '<--| set listbox columns count 
     .ColumnWidths = "0;144" '<--| set listbox columns width 
    End With 
    PopulateListboxWithArray Me.ListBox1, var 
End Sub 
+0

您好,感谢响应。当多行数据返回时需要转置。我确实尝试了.list = var,但没有奏效。欢呼声 – Nick

+0

@尼克,不客气。我添加了一些背景知道如何填充'var'并让它工作 – user3598756