将数组分配给集合

时间:2015-01-21 08:41:02

标签: vba access-vba

从代码中我很容易看到我想要的东西,但到目前为止没有任何作用:

Sub test()
    Dim C As New Collection
    Dim A() As String

    ReDim A(0, 1)
    A(0, 0) = "row 0, col 0"
    A(0, 1) = "row 0, col 1"

    C.Add A(0), "first" ' subscript out of range error

    Debug.Print C.Item("first")(0) & ", " & C.Item("first")(1)
End Sub

所以,我只想让一个数组作为集合的成员。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您不是在寻找集合,而是在寻找字典。

  1. Microsoft Scripting Runtime添加到参考文献(工具/参考文献);

  2. 使用字典而不是集合稍微修改代码:

    Sub test()
       Dim C As New Scripting.Dictionary '<-- not collection
       Dim A() As String
    
       ReDim A(0, 1)
       A(0, 0) = "row 0, col 0"
       A(0, 1) = "row 0, col 1"
    
       C.Add "first", A '<-- key first, item then
    
       Debug.Print C("first")(0, 0) & ", " & C("first")(0,1) <-- you need to access the elements properly (bi-dimensional)
    
    End Sub
    
  3. 对于错误(“下标超出范围”),它取决于数组的错误使用。您将其定义为A(0 to 0, 0 to 1),因此您无法使用它,就像它是单维的一样。