【问题标题】:How to access an array of dictionaries?如何访问字典数组?
【发布时间】:2017-03-29 16:23:03
【问题描述】:

我想使用一个字典数组来存储 Excel 工作簿的所有内容,以便以后处理它并在内存中进行操作。

我已定义 Excel 工作簿的第一行是键,其余行是内容。由于我对多个值都有一个键,因此我需要将它们存储在不同的容器中(这将是数组)。

内容示例

代号 姓氏 1个 2 天

代码:

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

但是,这不被接受。如何访问数据?

替代方案或更简单的东西会很棒。

【问题讨论】:

    标签: arrays excel vba dictionary


    【解决方案1】:

    可能是这个?

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

    【讨论】:

      【解决方案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
      

      【讨论】:

        猜你喜欢
        • 2016-10-18
        • 2020-06-01
        • 2015-01-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-07
        • 2019-08-20
        • 1970-01-01
        相关资源
        最近更新 更多