RDA*_*RDA 2 excel vba dictionary reference
我不是专业程序员,但相当精通 VBA。我目前正在编写一个程序来分析大型数据库。当我发现数据库中需要进一步分析和潜在纠正的区域时,我想要的方法是在具有共同结构的多个词典中收集必要的数据。
虽然我可以通过早期绑定声明字典,但我需要一种方法来使用变量名引用每个字典,然后我可以用它来创建一个循环来快速分析我收集的所有信息。理想情况下,我想将字典命名为 A1、A2、A3 等,然后创建一个循环,在其中递增名称的数字部分,因为每个字典中的所有数据都以相同的方式分析/纠正。
虽然我知道间接引用不能在标准 VBA 中使用,但可以对每个字典使用对象变量。然而,对象变量本身似乎不具有变量结构的灵活性。这对于像 WorkSheets 这样的一些对象来说似乎是可能的,其中变量名称可以在 WorkSheets 后面的括号中定义(即 WorkSheets("A1")),但对于字典、集合、数组列表或任何其他类型的存储机制来说似乎不可能可能会使用。
我可以通过创建嵌套字典和一些拼凑的键名称来完成我想做的事情。我有一些数据,对于相同的键值需要不同的字典项。因此我需要创建同一密钥的不同“版本”。不用说,虽然这种方法可行,但如果我可以循环遍历名称,分析就会简单得多。
希望我充分描述了我的问题。我在尝试做的事情上是否完全不走运,或者有人知道如何实现这一目标?非常感谢!
在我最终了解VBA 字典(和集合)之前,我也拥有多年的 VBA 经验。我不完全清楚你的问题,因此这可能无法直接解决你的问题,但我一直在寻找借口来传递我在这两个主题上发现(并且我经常引用)的优秀资源:
\nPaul Kelley:Excel VBA 字典 \xe2\x80\x93 完整指南
\nPaul Kelley:Excel VBA 集合的终极指南
\n只是为了让我不会发布仅链接的答案,这里是摘录:
\n\n\n库/参考(早期绑定)
\n
\n \n\xe2\x80\x82\xe2\x80\x82\xe2\x80\x82 (使用VBE 中的->添加)Microsoft Scripting Runtime
Tools
References
声明(早期绑定)
\n
\nDim dict As Scripting.Dictionary
创建(早期绑定)
\n
\nSet dict = New Scripting.Dictionary
\n\n声明(后期绑定)
\n
\nDim dict As Object
创建(后期绑定)
\n
\nSet dict = CreateObject("Scripting.Dictionary")
\n\n添加项目(密钥不得已存在)
\n
\ndict.Add Key, Value
\n例如dict.Add "Apples", 50
更改键处的值。如果 key 不存在则自动添加。
\n
\ndict(Key) = Value
\n例如dict("Oranges") = 60
检查密钥是否存在
\n
\ndict.Exists(Key)
\n例如If dict.Exists("Apples") Then
获取项目数
\n
\ndict.Count
\n
使用键\nValue = dict(Key)
\n从字典中获取值,例如appleCount = dict("Apples")
\n\n删除项目
\n
\ndict.Remove Key
\n例如dict.Remove "Apples"
删除所有项目
\n
\ndict.RemoveAll
\n\n循环遍历所有项目 (
\nFor..Each
loop)
\nDim key As Variant
\nFor Each key In dict.Keys
\nDebug.Print key, dict(key)
\nNext key
循环遍历所有项目(仅
\nFor..Next
循环 -早期绑定)
\nDim i As Long
\nFor i = 0 To dict.Count - 1
\nDebug.Print dict.Keys(i),
\ndict.Items(i)
\nNext i
\n\n区分大小写(字典必须为空)。
\n
\ndict.CompareMode = vbBinaryCompare
使键不区分大小写(字典必须为空)。
\n
\ndict.CompareMode = vbTextCompare
(更多信息来源: Paul Kelly Excel Macro Mastery)
\n