excel - 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
解决方案
您应该按照 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
。
推荐阅读
- appkit - 使用 ApplescriptObjc 处理 NSWindow 和 NSTextview 视图
- python-3.x - 在 Vagrant 框中全新安装 Ubuntu 18.04 时安装 python3-dev 的问题
- ios - MFMailComposeViewController - 无法取消或返回上一个视图
- java - 是否有创建和启动简单 html 页面的 Java 代码?
- html - Safari 视口错误,固定位置和底部或顶部的问题
- reactjs - 除了 value 道具之外的任何道具都可以在 Context.Provider 中工作吗
- vb.net - 根据 datagridview 行选择从 SQLite 获取数据
- r - 如何将预测函数用于存储在小标题中作为列的线性模型
- regex - 正则表达式:至少匹配给定字符串或模式列表中的*两个*?
- nix - 如何在商店中找到一个派生路径,从编译的包路径开始?