在 VBA 中创建和使用字典
- 前提条件
- 
          
            使用 VBA 创建 Dictionary对象
- 
          
            使用 VBA 在 Dictionary对象中添加项目
- 
          
            使用 VBA 返回 Dictionary上的值
- 
          
            使用 VBA 更改 Dictionary上的值
- 
          
            使用 VBA 计算字典中的项目
- 打印字典中的所有键和值
 
VBA 中的 Dictionary 对象与我们用来了解单词含义的语言字典无关。
在 VBA 中,Dictionary 对象在某种程度上类似于 Collection 对象来存储数据。主要区别在于 Collection 不能:
- 检查一个项目是否在集合中
- 更改现有项目的值
当然,我们仍然可以使用 Collection 并创建解决此问题的解决方法,但 Dictionary 提供这些解决方案和预定义的方法。因此,Dictionary 可用于特定任务,尤其是在检索某个项目时。
本文演示了如何创建和利用 Dictionary 对象在你的 VBA 代码中执行某些功能。
前提条件
Dictionary 对象不附带 VBA 的默认库。因此,在充分利用 Dictionary 对象之前,需要引用 Microsoft Scripting Runtime 库,包括 Dictionary 对象。
- 
打开 Excel 文件。
- 
从开发人员选项卡中,打开Visual Basic编辑器。
- 
从工具工具栏中,单击参考。
- 
勾选Microsoft Scripting Runtime复选框。
现在一切就绪。
使用 VBA 创建 Dictionary 对象
现在 Microsoft Scripting Runtime 在 References 中,下面的代码块将演示如何创建 Dictionary 对象。
从 Scripting.Dictionary 库创建一个对象,然后将其初始化为一个新对象。
Sub DictionaryDemo()
Dim d As Scripting.Dictionary
Set d = New Scripting.Dictionary
End Sub
使用 VBA 在 Dictionary 对象中添加项目
语法:
[DictionaryObject].Add([Key], [Item])
参数:
| [DictionaryObject] | 必需的。 字典的名称 | 
| [Key] | 必需的。在 Dictionary中引用Item的数据。 | 
| [Item] | 必需的。设置或返回 Dictionary中 Item 的值 | 
我们可以使用前面的代码块将项目添加到 Dictionary。名称(Glen、Myla、Katrina、Jose)被添加为键,他们各自的年龄作为下面代码块中的值。
Sub DictionaryDemo()
Dim d As Scripting.Dictionary
Set d = New Scripting.Dictionary
d.Add ("Glen", 25)
d.Add ("Myla", 49)
d.Add ("Jose", 58)
d.Add ("Katrina", 18)
End Sub
使用 VBA 返回 Dictionary 上的值
使用 Dictionary,我们可以通过知道与它对应的键来返回一个值。
返回语法:
[Value] = [DictionaryObject](Key)
更改语法:
[DictionaryObject](Key) = [Value]
参数:
| [DictionaryObject] | 必需的。 字典的名称 | 
| [Key] | 必需的。在 Dictionary中引用Item的数据。 | 
| [Value] | 必需的。设置或返回 Dictionary中 Item 的值 | 
使用语法,键 Myla 的值返回 49。
Sub DictionaryDemo()
Dim d As Scripting.Dictionary
Set d = New Scripting.Dictionary
d.Add "Glen", 25
d.Add "Myla", 49
d.Add "Jose", 58
d.Add "Katrina", 18
Debug.Print d("Myla")
End Sub
输出:
49
使用 VBA 更改 Dictionary 上的值
使用 Dictionary,我们可以通过知道与之对应的键来更改值。
更改语法:
[DictionaryObject](Key) = [Value]
参数:
| [DictionaryObject] | 必需的。 字典的名称 | 
| [Key] | 必需的。 Dictionary中引用Item的数据 | 
| [Value] | 必需的。设置或返回 Dictionary中 Item 的值 | 
在下面的代码块中,键 Myla 的值使用上面的语法从 49 更改为 50。
Sub DictionaryDemo()
Dim d As Scripting.Dictionary
Set d = New Scripting.Dictionary
d.Add "Glen", 25
d.Add "Myla", 49
d.Add "Jose", 58
d.Add "Katrina", 18
d("Myla") = 50
Debug.Print d("Myla")
End Sub
输出:
50
使用 VBA 计算字典中的项目
我们可以使用 Count 方法返回 Dictionary 中所有元素的数量。
计数语法:
[Value]= [DictionaryObject].Count
参数:
| [DictionaryObject] | 必需的。 字典的名称 | 
| [Value] | 返回 Dictionary中的项目数 | 
在下面的示例中,我们使用 Count 方法获取 d 对象的内容。
Sub DictionaryDemo()
Dim d As Scripting.Dictionary
Set d = New Scripting.Dictionary
d.Add "Glen", 25
d.Add "Myla", 49
d.Add "Jose", 58
d.Add "Katrina", 18
Debug.Print "There are " & d.Count & " items in the Dictionary."
End Sub
输出:
There are 4 items in the Dictionary.
打印字典中的所有键和值
下面的代码块将使用循环打印 Dictionary 中的所有键和值。
Sub DictionaryDemo()
Dim d As Scripting.Dictionary
Set d = New Scripting.Dictionary
d.Add "Glen", 25
d.Add "Myla", 49
d.Add "Jose", 58
d.Add "Katrina", 18
Dim Key as Variant
For Each Key In d.Keys
    Debug.Print Key, d(Key)
Next
End Sub
输出:
Glen           25 
Myla           49 
Jose           58 
Katrina        18