Arrays 在VBA中循环浏览多列列表框的行

Arrays 在VBA中循环浏览多列列表框的行,arrays,vba,collections,listbox,Arrays,Vba,Collections,Listbox,我有一个列表框问题。我试图将多列列表框的内容作为列表框每一行的数组复制到集合中。我意识到我可以遍历listbox的每一行和每一列,但我试图找到一种方法来返回listbox的每一行并将其直接分配给数组。大概是这样的: For each item in ListBox tempArrayA = item tempCollection.add item Next item 然而,当我这样做的时候,它会给我每一行的每个单独字段,而不是像我希望的那样一次给出整行。我一直在用谷歌搜索,我会

我有一个列表框问题。我试图将多列列表框的内容作为列表框每一行的数组复制到集合中。我意识到我可以遍历listbox的每一行和每一列,但我试图找到一种方法来返回listbox的每一行并将其直接分配给数组。大概是这样的:

For each item in ListBox
    tempArrayA = item
    tempCollection.add item
Next item
然而,当我这样做的时候,它会给我每一行的每个单独字段,而不是像我希望的那样一次给出整行。我一直在用谷歌搜索,我会继续用谷歌搜索,但我只是觉得这样做很好,可以迭代列表框中的每个项目,而不是选择每一行,然后遍历该行的每一列,因为我有其他代码在选择列表框的一行时执行


和往常一样,我们非常欣赏任何想法。谢谢

您可以利用工作表
索引
函数、它在数组上工作的事实,以及作为其
参数输入的0获取整行的事实。真的很酷

Private Sub UserForm_Activate()
Dim varList As Variant
Dim varRow As Variant
Dim i As Long
Dim tempCollection As Collection

Me.ListBox1.List = ActiveSheet.Range("A2:B20").Value
varList = Me.ListBox1.List
Set tempCollection = New Collection
For i = 1 To Me.ListBox1.ListCount
    varRow = Application.WorksheetFunction.Index(varList, i, 0)
    tempCollection.Add varRow, CStr(i)
    Debug.Print tempCollection(i)(1); " "; tempCollection(i)(2)
Next i
End Sub

这太棒了!我不知道索引可以这样使用!非常非常方便。谢谢你的提示!我很高兴这有帮助!我非常喜欢
索引
处理这个问题的方式。我确实意识到我犯了一个以前犯过的愚蠢错误,即认为我需要两个下一个
应用程序。当我可以指定
范围的
属性时,将
范围
转换为
列表
。我已编辑以更正此问题。