在 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