VBA访问数据结构

时间:2018-11-21 18:15:23

标签: excel vba excel-2010

我要访问的数据结构非常复杂。之所以这样设置,是因为我希望每个报表的结构都包含该报表的所有问题以及每个问题的所有数据。请查看下面的代码以了解我在做什么。

Dim master As New Dictionary      
Dim child As New Dictionary

在报告中的每个问题上都会发生这种情况。请注意,最后coll1-coll6是我要打印的内容

'coll# is a collection 
child.Add ID, Array(coll1, coll2, coll3, coll4, coll5, coll6)

对于要创建的报告列表中的每个报告都会发生这种情况

master.Add reportNumber, child

现在我通过这样做一步一步地传递每个报告

master.key(i)

给出master.key(i)的报告,我希望能够访问包含所有集合的子级Array

For Each key In reportData.Keys
     Debug.Print reportData(key).Item(1).Item(1)
Next key

上面的代码是我试图从一个问题的集合中的一个问题内的报告中打印出数据

PS。我知道这似乎有些令人费解,但我将其视为存储包含所有数据的报告列表以生成自动报告的最佳解决方案。

总而言之,我的问题是如何访问数组集合中的数据。

建议您提出一种更好的方法来完成我要完成的任务。从本质上讲,这是一个框架,我可以在其中自动创建报告。

我已将Array(coll1,...,coll6)更改为字符串,以查看是否可以访问它并正确打印出来。所以看起来我在访问Array(coll1,...,coll6)时遇到问题

1 个答案:

答案 0 :(得分:0)

看起来像这样接近您想要的东西:

Sub Tester()

    Dim Master As New Dictionary
    Dim child As New Dictionary, km, kc
    Dim col1 As New Collection, col2 As New Collection

    col1.Add "Hello"
    col1.Add "World"
    col2.Add "Blue"
    col2.Add "Green"

    child.Add "ID01", Array(col1, col2)

    Master.Add "Key01", child

    For Each km In Master.Keys
        Debug.Print "Master key:", km          '>> Key01
        For Each kc In Master(km)
            Debug.Print "    Child key:", kc   '>> ID01
            Debug.Print , Master(km)(kc)(0)(1) '>> Hello
            Debug.Print , Master(km)(kc)(0)(2) '>> World
            Debug.Print , Master(km)(kc)(1)(1) '>> Blue
            Debug.Print , Master(km)(kc)(1)(2) '>> Green
        Next kc
    Next km

End Sub