【问题标题】:creating 2d array lists in VBA在 VBA 中创建二维数组列表
【发布时间】:2020-03-12 23:13:32
【问题描述】:

我正在尝试在 VBA 中创建二维数组列表。我相信我遇到了语法问题。我无法将 y 轴项添加到行中。我收到一个错误:multiList.Add(List) 的“无效过程或参数”。

我首先初始化 x 轴以创建数组列表行,然后使用 combine.count 初始化列。

Sub Test()

Dim xaxis As Integer
xaxis = 4


Dim combined As New ArrayList
combined.Add ("version1")
combined.Add ("version2")
combined.Add ("version3")
combined.Add ("version4")
combined.Add ("version5")
combined.Add ("version6")
combined.Add ("version7")


Dim multiList As ArrayList
Set multiList = New ArrayList

'initialise empty array list of size xaxis with lists inside
For r = 0 To xaxis


Dim List As ArrayList
Set List = New ArrayList


multiList(r).Add (List)

Next


'fill the array lists

For x = 0 To xaxis
For y = 0 To combined.Count

multiList(x).Add (combined(y))

Next y
Next x


'print the array list

For x = 0 To xaxis
For y = 0 To combined.Count

Debug.Print (multiList(x)(y))

Next y
Next x




End Sub

这样做的总体目的是做一些交叉引用并根据 x 轴项目是否包含“组合”中的项目来填充二维数组列表

【问题讨论】:

  • multiList 是 arraylist 但 multiList(r) 什么都不是。
  • 感谢您的评论,当我在 MultiList 中循环时:对于 r = 0 到 xaxis,意图是将索引 r 处的 multiList 的内容设置为指向新创建的 arrayList 'List' .从而创建一个二维数组列表。我试过 Multilist.add (list) , MultiList(r) = List 无济于事。我不熟悉 VBA 语法,所以任何关于如何成功初始化空二维数组列表的想法都会非常有帮助,谢谢。

标签: excel vba arraylist


【解决方案1】:

希望这是你需要的:

Sub Test()
Dim xaxis As Integer
xaxis = 4

'First Arraylist Contains 7 strings
Dim combined As New ArrayList
For i = 1 To 7
    combined.Add ("version" & i)
Next i

'Second TotalArraylist contains 4 child Arraylists 1 to 4
Dim multiList As New ArrayList
Dim mul_element As ArrayList
For r = 1 To xaxis
    Set mul_element = New ArrayList
    multiList.Add mul_element
Next

'fill the TotalArraylist lists

For Each mul_element In multiList '[4 child Arraylists]
    For y = 0 To combined.Count - 1   '[7 strings] 0 to 6
        mul_element.Add (combined(y))
    Next y
Next mul_element

'print the string stores in mul_element(Child arraylist) in multiList(Total arraylist)

For x = 0 To multiList.Count - 1 '[4 element] 0 to 3
    For y = 0 To combined.Count - 1  '[7 element] 0 to 6
        Debug.Print multiList(x)(y)
    Next y
Next x
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-08
    • 2013-09-19
    • 2012-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-03
    相关资源
    最近更新 更多