首页 > 解决方案 > VBA循环遍历字典键和项目

问题描述

菜鸟问题。我意识到这可能以前被问过,但我仍然需要一些帮助,因为我从未在 VBA 中使用过字典。

我找到了一段很好的代码,它将列转换为字典,这正是我需要的(见下文),但是一旦它将范围转换为字典,我就无法弄清楚如何用它做任何事情。甚至是简单的 Debug.Print 或遍历键值。我浏览了无数文章和 youtube 视频(解释字典,但没有“这么高级”),我错过了一些东西。

Sub Test()
    RangeToDict2 Range("H2:I36")

    Debug.Print RangeToDict2.Item("a") 'FAILS HERE
End Sub
Function RangeToDict2(ByVal R As Range) As Dictionary
    Set RangeToDict2 = New Dictionary
    i = 1
    Do Until i >= (R.Rows.Count * R.Columns.Count)
        RangeToDict2.Add R(i), R(i + 1)
        Debug.Print R(i) & ", " & R(i + 1)
        i = i + 2
    Loop
End Function

标签: excelvbadictionary

解决方案


您应该按照 braX 的建议阅读一两个关于脚本字典的教程。

您的示例中的一个特殊问题是,它RangeToDict2是一个带有Range参数的函数,它返回一个字典,因此Debug.Print RangeToDict2.Item("a")实际上没有意义,因为Item("a")它不是一个范围。您可能需要更多类似的东西:

Sub Test()

Dim d As Object

Set d = RangeToDict2(Range("A1:B3"))
Debug.Print d.Item("a") 'FAILS HERE

End Sub

然后,您可以遍历 的键或项d


推荐阅读