访问VBA-Excel中的一系列词典

时间:2017-03-29 16:23:03

标签: arrays excel vba excel-vba dictionary

我想使用一个字典数组来存储Excel的所有内容,以便以后轻松处理它并在内存中进行操作。 我会定义excel的第一行是键,其余行是内容。因为我有许多值的一个键,我需要将它们存储在不同的容器中(这将是数组)。

内容样本

Code Name Surname
1    a     b
2    c     d

所以,代码将是这样的:

For Each rcell In ws.UsedRange.Cells
   If rcell.Row > 1 Then
        ReDim Preserve aRows(rcell.Row - 2)
        'Set aRows(rcell.Row - 2) = CreateObject("scripting.dictionary")
        Set pInfo = New Scripting.Dictionary
        pInfo.Add Key:=Cells(1, rcell.Column).Value, Item:=rcell.Value
        'aRows(rcell.Row - 2).Add Key:=Cells(1, rcell.Column).Value, Item:=rcell.Value
        Set aRows(rcell.Row - 2) = pInfo
    End If
Next rcell

使用此代码我创建了字典数组。但是,当我想访问数据时,我收到错误,我猜不出正确的访问方式。

我知道至少它存储的是因为当我使用时:

 debug.print(ubound(aRows))

在这种情况下我得到值(1)。

另外,我尝试使用

访问内容
for each row in aRows
   debug.print(row.key)
next row

然而,这是不被接受的。如何访问数据?

谢谢 此外,如果有人建议替代或更简单的东西会很棒。这是我能解决问题的最佳解决方案。

2 个答案:

答案 0 :(得分:2)

可能是这个吗?

Dim d, k
For Fach d in aRows
    For Each k in d.keys 
        Debug.Print k, d(k),
    Next
    Debug.Print vbCrLf
Next

答案 1 :(得分:2)

你可以使用

Dim myRow as Variant, key as variant
For Each myRow In aRows
    With myRow 
        For Each key In .Keys
            Debug.Print key, .Item(key)
        Next
    End With
Next