分享

VBA的字典对象

 宏码智慧 2019-04-15

在Excel里试过了字典以后,发现比我以前常用的方法效率高,还好用,就隔三差五地用起来了。不过, 虽然字典对象本身不复杂,但依旧常常有忘记了的地方,同一个问题会反反复复地百度,真不应该。

今天就抽一点点时间, 自己整理一回,免得老是麻烦度娘哦。

字典(Dictionary)对象:

相当于一种联合数组,由具有唯一性的关键字(Key)和它的项(Item)联合组成。就好像一本字典,由字条和对应的注解组成。

名词对照:
Dictionary        字典
Key                   关键字
Item                  项()

下面分三个方面讲解。

  • 方法有6个:Add、Exists、Keys、Items、Remove、RemoveAll。

  • 属性有4个:Count、Key、Item、CompareMode。

  • 经典代码举例。

首先是方法:

  • Add方法
    object.Add (key, item)
    向 Dictionary 对象中添加一个关键字项目对。
    如果 key 已经存在,将导致一个错误。

  • Exists方法
    object.Exists(key)
    如果 Dictionary 对象中存在所指定的关键字则返回 true,否则返回 false。

  • Keys方法
    object.Keys( )
    返回一个数组,其中包含了一个 Dictionary 对象中的全部现有的关键字。

  • Items方法
    object.Items( )
    返回一个数组,其中包含了一个 Dictionary 对象中的所有项。

  • Remove方法
    object.Remove(key)

    Remove 方法从一个 Dictionary 对象中清除一个关键字,项目对
    如果所指定的关键字,项目对不存在,那么将导致一个错误。

  • RemoveAll方法
    object.RemoveAll( )
    RemoveAll 方法从一个 Dictionary 对象中清除所有的关键字,项目对。

其次是属性:

  • Count属性
    object.Count
    返回一个Dictionary 对象中的项目数。只读属性。

  • Key属性
    object.Key(key) = newkey
    在 Dictionary 对象中设置一个 key。
    如果没有发现该 key,那么将创建一个新的 key 并且其 item 被设置为空。

  • Item属性
    object.Item(key)[ = newitem]
    在一个 Dictionary 对象中设置或者返回所指定 key 的 item。对于集合则根据所指定的 key 返回一个 item。读/写。
    newitem 是可选项。仅适用于 Dictionary 对象;是与所指定的 key 相关联的新值。

    如果没有找到该 item,那么将利用所指定的 newitem 创建一个新的 key。如果在试图返回一个已有项目的时候没有找到 key,那么将创建一个新的 key 且其相关的项目被设置为空。

  • CompareMode属性
    object.CompareMode[ = compare]
    设置或者返回在 Dictionary 对象中进行字符串关键字比较时所使用的比较模式。
    compare 是可选项,代表比较模式的值。可以是 0 (二进制)、1 (文本), 2 (数据库)。
    如果试图改变一个已经包含有数据的 Dictionary 对象的比较模式,那么将导致一个错误。

最后是经典代码举例:

这两个例子很有Excel特色。

例一:把字典中所有的关键字赋给以B1单元格开始的单元格区域中。

Dim dic, karr   
Set dic = CreateObject("Scripting.Dictionary")
dic.Add "a", "名A"   
dic.Add "b", "B"
dic.Add "c", "C"
karr=dic.Keys     '数组,下限0
[B1].Resize(dic.Count,1)=Application.Transpose(karr)
'Resize第一个参数是行数,第二个参数是列数。
'
Transpose,把水平排列的置换成竖向排列。

例二:把字典中所有的关键字对应的项赋给以C1单元格开始的单元格区域中

Dim dic, tarr   
Set dic = CreateObject("Scripting.Dictionary")
dic.Add "a", "名A"   
dic.Add "b", "名B"
dic.Add "c", ""
tarr=dic.Items
[C1].Resize(dic.Count,1)=Application.Transpose(tarr)

更多例子可参考下面的参考资料。

正文完

参考资料

  • excelhome 蓝桥玄霜 :常见字典用法集锦及代码详解

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多