将用户窗体中的> 10列多列列表框复制到数组

时间:2018-09-17 14:38:43

标签: arrays excel vba excel-vba listbox

我尝试了来自多个论坛的几种解决方案,但似乎无济于事。

我很确定自己犯了一些愚蠢的错误,解决方案就在我眼前,但是我无法使它起作用。

我需要在用户表单中用12列填充列表框

据我所知,对于10列以上的列,不能再使用 .List(i) 属性,而必须使用数组来填充它。我的问题是,每次需要在 listbox 中插入新行时,都需要将 listbox 中的项目复制到 array 中, redim array 再有一行,将新数据“插入”到这一新行中,最后将 array 复制到< em>列表框。

我的代码如下:

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

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

Error message

有什么主意吗?谢谢。

1 个答案:

答案 0 :(得分:1)

正确的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