vba 字典_VBA字典的声明及应用

Hi ,大家好,上一期介绍了VBA中集合的简单应用,了解到集合相对于数组,更适用于事先无法预知要保存多少数据项的情况,因为集合可以任意的添加删除数据项,没有数据项个数限制。

但是我们也可以看到,集合在访问数据项的时候也有一些限制,常用的是通过索引号来访问数据项,但是如果这中间发生了数据项的删除或者添加,则索引号所对应的数据项就会发生变化,如果有些情况下没有注意到这种变化,则获取到的数据项可能不是预先想要的数据。

虽然集合针对这样的情况,添加了用于替代位置索引访问集合的key,也就是一串唯一的字符串表达式,但是实际使用起来也不是特别的方便,因此,VBA中针对这种使用唯一的key来访问数据项的情况,引入了一个新的对象----字典

字典

字典,简单来说,就是专门用来存储键值对的一种对象,其中键(key)是用来索引的,真正存储的数据是键所对应的值,也就是数据项。

相比于集合中key只能是字符串表达式来说,字典的key的可用的范围更广,虽然通常是整数或者是字符串,但是除了数组之外,其他的数据类型基本上都可以用。

通过如下代码可声明一个字典:

'声明一个通用对象Dim Dic As Object'创建一个字典对象,并绑定到通用对象Set Dic = CreateObject("Scripting.Dictionary")

从上述代码可以看到,字典的声明比数组和集合要复杂一些,这是因为字典不是VBA内置的数据类型,属于Windows脚本语言的类型,因此默认情况下不能像其他VBA内置的数据类型的一样直接使用Dim来创建。

虽然非内置的数据类型定义默认不能直接使用Dim来创建,但是通过在VBA中添加引用,就可以将非内置的数据类型的定义简化,就像是内置类型一样。

通过点击VBA 代码编辑环境的菜单栏中的"工具"选项中的"引用",弹出引用选项卡,添加"Microsoft  Scripting Runtime"引用,如下图所示:

e86c4805f94faa72e66f1aedb091b3e1.png

在添加了引用之后,字典的声明的声明就变得跟内置的数据类型一样了,如以下代码所示:

Dim Dic As New Dictionary

不过这两种方法各有优缺点:

方法1:声明步骤多一个步骤,但是对编程环境要求低,代码便于移植到其他文档上面。

方法2:需要手动添加外部引用,未手动添加的情况下,会出现运行错误的提示,但能简化声明,并且在使用VBA编程环境编写代码时,有很好的代码补全功能。

具体使用哪一种方法,需要看个人的偏好及实际的应用情况。经过实际测试,方法2在Word上面无法使用,在Excel,PowerPoint,Outlook中运行良好,应该是Word中默认引用的某些库与"Microsoft  Scripting Runtime"库冲突了,导致无法引用。

字典作为一种对象,与集合一样,同样提供了操作字典的方法,例如添加,删除,返回字典项等操作,同时,还提供反映字典当前的数据项总数的属性等。

下面通过一个具体例子,看看代码中是如何使用字典类型的:

Sub BaseCode3()'声明一个通用对象Dim Dic As Object'创建一个字典对象,并绑定到通用对象Set Dic = CreateObject("Scripting.Dictionary")'添加三个字典项键值对Dic.Add "ppt", "PowerPoint"Dic.Add "doc", "Word"Dic.Add "oe", "Outlook"'迭代输入已添加的数据项For Each Key In Dic.Keys    Debug.Print "key = " & Key & " Item = " & Dic.Item(Key)Next'输出字典中的总的数据项个数Debug.Print "目前字典中共有 " & Dic.Count & "个数据项"'检查字典中是否存在指定的keyIf Dic.Exists("oe") Then    Debug.Print "字典中存在名为oe的key"Else    Debug.Print "字典中不存在名为oe的key "End If'移除名为"oe"的键值对Dic.Remove ("oe")'输出一项键值对后字典项的个数Debug.Print "目前字典中共有 " & Dic.Count & "个数据项"'再次检查是否存在指定的keyIf Dic.Exists("oe") Then    Debug.Print "字典中存在名为oe的key"Else    Debug.Print "字典中不存在名为oe的key "End If'移除所有键值对Dic.RemoveAll'输出移除所有项后字典项的个数Debug.Print "目前字典中共有 " & Dic.Count & "个数据项"End Sub

复制粘贴上述代码到VBA代码编辑窗口并运行,运行结果如下图所示:

5ca40fea9883b1da2132f6e2773519d1.png

通过立即窗口打印出来的调试信息可以看到,在创建了字典对象之后,首先添加了3个字典键值对,并将其依次输出,同时字典中数据项为3项,同时,在字典中查找到了存在指定的键"oe",随后将其键值对删除,并确认字典中已经不存在指定的键了,然后在移除所有的键值对后,确认字典中的数据项为0,上述就是VBA中字典的基本的声明及简单应用了。

觉得有用吗?想了解更多吗?下方扫码关注喔!

6e64df4f089e454b17ba12ec4a4a6703.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值