Excel中的字典(Dictionary)对大多数人来说都是个谜,即使是有些很熟悉VBA的人,可能对其都还不了解。其实,字典是一个很好的工具,运行快速,可以执行一些很好的计算。字典的工作原理与普通字典相同,一个单词不会以相同的拼写输入两次。在字典中,键(key)是唯一的标识符,用于标记字典中的条目。只有唯一的键才能输入字典,这就打开了奇妙的可能性。字典可以快速存储和合并数据,其结果可以输出到任何地方并实时更新。与字典相关的方法Add方法添加新的键/项目对到Dictionary对象。Exists方法返回布尔值,表明键是否存在于Dictionary对象中。Items方法返回Dictionary对象中所有项目的数组。Keys方法返回Dictionary对象中所有键的数组。Remove方法从Dictionary对象中移除指定的键/项目对。RemoveAll方法从Dictionary对象中移除所有的键/项目对。放入数据到字典以下是将项目放入字典的方法。基本字典条目分为两部分:键(Key)——为Dictionary对象中的现有键值设置新键值。项目(Item)——设置或返回Dictionary对象中项目的值。因此,字典中的一个典型条目如下所示:“Key
1”,”Item 1”Key 1为唯一键,Item 1为其关联项。对于初学者来说,令人困惑的是,该项在引用区域时获取键的值,这通常是通过数组对象完成的。然而,为了简化这个过程,这里将通过添加一个键和一个项目展示它是如何在一个非常基本的级别上工作的。Add方法的使用使用.Add方法可以同时添加键和相对应的项目。这可以通过以下方式完成:Sub
ScriptKey() Dim d As Variant Set d =
CreateObject('Scripting.dictionary') d.Add 'Key1', 'i1' d.Add 'Key2', 'i2' d.Add 'Key3', 'i3'End
Sub可以通过Debug.Print在立即窗口中打印出键/项目值对,代码如下:Sub
ScriptKey() Dim d As Variant Set d =
CreateObject('Scripting.dictionary') d.Add 'Key1', 'i1' d.Add 'Key2', 'i2' d.Add 'Key3', 'i3' Debug.Print d.keys()(0), d.items()(0) Debug.Print d.keys()(1), d.items()(1) Debug.Print d.keys()(2), d.items()(2)End
Sub在立即窗口中的输出如下图1所示。键值在左侧,项目值在右侧。图1引用“Microsoft
Scripting Runtime”库要充分利用字典,最好在VBA的“引用”菜单中添加对“Microsoft
Scripting Runtime”的引用。这将使你能够完全访问智能提示(IntelliSense),并允许查看可用的对象。要添加“Microsoft Scripting
Runtime”,在VBE中单击菜单“工具——引用”,在“引用”对话框中找到并勾选“Microsoft
Scripting Runtime”前的复选框,如下图2所示。图2统计字典中的项目数量要统计字典中的项目数,使用下面的方法:Sub
ScriptKey() Dim d As Variant Set d =
CreateObject('Scripting.dictionary') d.Add 'Key1', 'i1' d.Add 'Key2', 'i2' d.Add 'Key3', 'i3' MsgBox d.CountEnd
Sub上面的代码将给出字典中的项目总数。从字典中移除项目删除字典中的项目非常简单,只需引用字典和要删除的项目,如下面的代码:Sub
ScriptKey() Dim d As Variant Set d =
CreateObject('Scripting.dictionary') d.Add 'Key1', 'i1' d.Add 'Key2', 'i2' d.Add 'Key3', 'i3' d.Remove 'Key1' MsgBox d.CountEnd
Sub从字典中移除所有项目删除字典中的所有项都比删除其中的一项容易,只需引用字典本身并调用RemoveAll命令。下面的代码将删除所有内容:Sub
ScriptKey() Dim d As Variant Set d =
CreateObject('Scripting.dictionary') d.Add 'Key1', 'i1' d.Add 'Key2', 'i2' d.Add 'Key3', 'i3' d.RemoveAll MsgBox d.CountEnd
Sub比较字典中的项目如上所述,字典接受唯一键。KEy1
and Key1不相同,因此将为每个创建唯一键。Sub
ScriptKey() Dim d As Variant Set d =
CreateObject('Scripting.dictionary') d.Add 'KEy1', 'i1' d.Add 'Key2', 'i2'End
Sub使用上述方法添加新键。如果不想这样,使用比较模式可以使大写的名称与小写文本相同。下面的代码将修复比较问题:Sub
ScriptComp() Dim d As New Dictionary Set d =
CreateObject('Scripting.dictionary') d.CompareMode = TextCompare d.Add 'KEy1', 'i1' d.Add 'Key1', 'i2'End
Sub会发生错误,如下图3所示。图3这是对Excel中字典的基本介绍,没有涉及到其全部强大的功能,但它确实是VBA内部一个令人惊叹且值得研究的工具。。