如果数组具有1个条目,则从2D数组填充表单ListBox不能正常工作

时间:2019-09-19 12:59:51

标签: excel vba

问题

当我尝试使用只有1个“行”的2D数组填充表单ListBox时,它会从数组列值中创建单独的条目。

代码是:

ListBox1.List = Application.Transpose(Application.Transpose([DataA]))

我知道什么

在我的项目中,数据首先从不同来源收集到一个数组中,然后添加到列表框中。

数据的行和列很多,这就是为什么传递数组是将每个条目添加到单独的列表框列的一种更好的方法的原因。性能很重要,因为列表需要经常且快速地更新。

目前,我的解决方法是根据需要将第二行添加到数组中,然后将其直接从列表框中删除。

我想知道的内容

为什么传递1行2d数组时,列表框的行为会有所不同?

示例

Example workbook for download

填充5行:

enter image description here

填充1行:

enter image description here

第5行和第1行的数据如下:

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以先检查是否有一行,然后采取相应措施:

Private Sub CommandButton5_Click()
    Dim x
    ListBox1.Clear
    x = [DataB]
    ListBox1.List = IIf(UBound(x, 1) = 1, x, Application.Transpose(x))
    TextBox1 = ListBox1.ListCount
End Sub