在 VBA 中创建和使用字典

Glen Alfaro 2023年1月30日 2022年5月18日
  1. 前提条件
  2. 使用 VBA 创建 Dictionary 对象
  3. 使用 VBA 在 Dictionary 对象中添加项目
  4. 使用 VBA 返回 Dictionary 上的值
  5. 使用 VBA 更改 Dictionary 上的值
  6. 使用 VBA 计算字典中的项目
  7. 打印字典中的所有键和值
在 VBA 中创建和使用字典

VBA 中的 Dictionary 对象与我们用来了解单词含义的语言字典无关。

在 VBA 中,Dictionary 对象在某种程度上类似于 Collection 对象来存储数据。主要区别在于 Collection 不能:

  1. 检查一个项目是否在集合中
  2. 更改现有项目的值

当然,我们仍然可以使用 Collection 并创建解决此问题的解决方法,但 Dictionary 提供这些解决方案和预定义的方法。因此,Dictionary 可用于特定任务,尤其是在检索某个项目时。

本文演示了如何创建和利用 Dictionary 对象在你的 VBA 代码中执行某些功能。

前提条件

Dictionary 对象不附带 VBA 的默认库。因此,在充分利用 Dictionary 对象之前,需要引用 Microsoft Scripting Runtime 库,包括 Dictionary 对象。

  • 打开 Excel 文件。
  • 开发人员选项卡中,打开 Visual Basic 编辑器。
  • 工具工具栏中,单击参考
  • 勾选 Microsoft Scripting Runtime 复选框。

现在一切就绪。

使用 VBA 创建 Dictionary 对象

现在 Microsoft Scripting RuntimeReferences 中,下面的代码块将演示如何创建 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