【发布时间】:2019-02-21 12:36:06
【问题描述】:
我从几个论坛尝试了几种解决方案,但似乎没有任何帮助。
我很确定我犯了一些愚蠢的错误,解决方案就在我眼前,但我无法让它发挥作用。
我需要在一个包含 12 列的用户表单中填写一个 列表框。
据我所知,对于超过 10 列,不能再使用 .List(i) 属性,而必须使用数组来填充它。我的问题是每次我需要在listbox中插入一个新行,我需要将listbox中的项目复制到array中, redim array 增加一行,将新数据“插入”到这一新行中,最后,将 array 复制到 列表框。
我的代码如下:
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
它总是给出类型不匹配的错误:
有什么想法吗?谢谢。
【问题讨论】:
-
哪一行报错?
-
嗨@BruceWayne,这条线:arr(iCur, iCurAux) = Me.lbPlanPreview.ListIndex(iCur, iCurAux)
-
正如 OP 中正确提到的,
.AddItem方法在超过 10 列时失败。顺便说一句在下面的答案中正确使用List函数:-; -
ListBox.ListIndex返回选中的项目。 -
谢谢大家。它解决了它! :)
标签: arrays excel vba listbox userform