《盟威软件快速开发平台》在线帮助中心

Dictionary 字典对象

概述

在 使用 VBA 编程时,当我们需要存储多项数据时,可能会首先想到数组,毕竟这是 VBA 基础知识中就会学到的。

但数组存在一些不便之处,比如只能按索引查找其中的条目,不直观;不能随意删除中间的条目,不方便。

基于这样一些问题,VBA 中为我们提供了集合 Collection。它在数组的基础上,可以使用键(Key)来查找条目,可以任意添加、删除条目。这样就比数组要方便多了。

但仍然不够,我们想要更多。比如可以判断键/条目是否存在,可以随时修改条目内容等等。

众里寻她千百度,在 Microsoft Scripting Runtime 库中,有一个 Scripting.Dictionary 对象,它在 Collection 的基础上,具有更丰富的功能,这就是我们想要的!

由于 Scripting.Dictionary 是第三方库中的内容,而不是 Access 或平台内置的东西,因而在平台中使用时,我们需要引用后才能使用,这样仍然有一点不方便。

平台的愿景就是让大家更方便,于是从 2.5.0 版开始,平台默认集成了 Dictionary 对象,则不再需要引用即可直接使用,又保留了 VBE 中智能感知和自动完成的方便功能。

平台中的 Dictionary 和 Scripting.Dictionary 百分百兼容,接口完全相同。唯一的区别就在于平台的 Dictionary 不需要引用,但仍然可以使用 VBE 的智能感知和自动完成功能,即同时具有 Scripting.Dictionary 前期绑定和后期绑定的优点。

开发接口

属性 说明
CompareMode 设定或返回键的字符串比较模式。
  • 0 - BinaryCompare 二进制比较模式(区分大小写)。
  • 1 - TextCompare 文本比较模式(不区分大小写)。
  • 2 - DatabaseCompare 数据库比较模式。
Count 只读。返回 Dictionary 里的键/条目对的数量。
Item(Key) 设定或返回指定的键的条目值。
Key(Key) 设定键值。

方法 说明
Add(Key,Item) 增加键/条目对到 Dictionary。
Exists(Key) 如果指定的键存在,返回 True,否则返回 False。
Items 返回一个包含 Dictionary 对象中所有条目的数组。
Keys 返回一个包含 Dictionary 对象中所有键的数组。
Remove(Key) 删除一个指定的键/条目对。
RemoveAll 删除全部键/条目对。

示例

    
'使用 Microsoft Scripting Runtime 中的 Dictionary 的前期期绑定写法(需引用):
    Dim dct As Scripting.Dictionary
    Set dct = New Scripting.Dictionary
    With dct
        .Add "K1", "张三"
        .Add "K2", "李四"
        .Add "K3", "王五"
    End With

'------------------------------------------------------------------------------

'使用 Microsoft Scripting Runtime 中的 Dictionary 的后期绑定写法(不引用):
    Dim objDict As Object
    Set objDict = CreateObject("Scripting.Dictionary")
    With objDict
        .Add "K1", "张三"
        .Add "K2", "李四"
        .Add "K3", "王五"
    End With

'------------------------------------------------------------------------------

'2.5.0 之后在平台中使用的写法:
    Dim dct As Dictionary
    Set dct = NewDictionary()
    With dct
        .Add "K1", "张三"
        .Add "K2", "李四"
        .Add "K3", "王五"
    End With
    '判断K4是否存在,如果不存在则添加
    If dct.Exists("K4") Then
       dct.Add "K4", "红尘如烟" 
    End If

修订记录

  1. 2019-07-08 2.5.0 加入