将Userform中的10列多列列表框复制到数组中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将Userform中的10列多列列表框复制到数组中相关的知识,希望对你有一定的参考价值。

我尝试了几个论坛的几个解决方案,但似乎没有任何帮助。

我很确定我犯了一些愚蠢的错误,解决方案就在眼前,但我不能让它发挥作用。

我需要在一个包含12列的用户表单中填充列表框。

据我所知,对于超过10列,一个人不能再使用.List(i)属性,但必须使用数组来填充它。我的问题是每次我需要在列表框中插入一个新行时,我需要将列表框中的项目复制到数组中,重新安排数组以再生成一行,将新数据“插入”到这个新行中,最后,将数组复制到列表框中。

我的代码如下:

iLine = lbPlanPreview.ListCount
ReDim arr(iLine, lbPlanPreview.ColumnCount - 1)

If iLine > 0 Then
    ReDim arr(0 To iLine - 1, lbPlanPreview.ColumnCount - 1)

    'Array Lines
    For iCur = 0 To iLine - 1
        'Array Columns
        For iCurAux = 0 To lbPlanPreview.ColumnCount - 1
            arr(iCur, iCurAux) = Me.lbPlanPreview.ListIndex(iCur, iCurAux)
        Next iCurAux
    Next iCur
End If

它总是给出类型不匹配错误:

任何的想法?谢谢。

答案

正确的ListBox.List功能

认为你的最后一个数组赋值恢复先前的数据应该如下所述,并且可能仅限于lbPlanPreview.ListCount - 1

'Array Lines
 For iCur = 0 To lbPlanPreview.ListCount - 1    ' possibly instead of: ILine - 1
    'Array Columns
    For iCurAux = 0 To lbPlanPreview.ColumnCount - 1
        arr(iCur, iCurAux) = Me.lbPlanPreview.List(iCur, iCurAux)
    Next iCurAux
 Next iCur

以上是关于将Userform中的10列多列列表框复制到数组中的主要内容,如果未能解决你的问题,请参考以下文章

复制并删除所选的列表框项目

ListBox(用户窗体)VBA中的多列

如何使用VBA隐藏多列列表框中的列

将多列中的列表合并到熊猫中的单列

将数据框列中的列表拆分为多列[重复]

将列表的列拆分为同一 PySpark 数据框中的多列