VBA字典入门

| |
[不指定 2016/05/10 17:52 | by 吕进 ]
一、初识字典
  1、英文名字 Dictionary
  2、存在于 Scrrun.dll 文件中
  3、需将文件注册到系统中

  4、需引用文件的声明方法
    4.1、Dim D As Scripting.Dictionary (使用时还需用代码创建)
    4.2、Dim D As  New Scripting.Dictionary(对象实例化声明,声明后可直接使用)
    4.3、声明时 Scripting 可省略

  5、创建法
    5.1、Set D=CreateObject("Scripting.Dictionary")
    5.2、Scripting 为 scrrun 文件的工程名称
    5.3、Dictionary 为 Scripting 工程中的一个类模块(功能模块)

  6、字典中的两项(条目)
    6.1、Key(Variant类型),在字典中不重复(必需的)
      若key是对象则允许有重复
    6.2、Item(Variant类型),key所对应的“备注”信息(必需的)
    6.3、演示代码在字典中新建一条key及对应item都为“”的数据
      D.Add "",""
      两个“”,缺一不可
      若继续再次使用此代码创建将报错误

  7、它有4个属性,6个方法
     属性:CompareMode ,Count ,Item ,Key
    方法:Add ,Exists,Items ,Keys,Remove ,RemoveAll

二、字典6方法
  1、Add 方法
    用法 Object.Add(Key,Item)
      向 Dictionary 对象中添加关键字项目对
      Object 必需的,总是一个Dictionary对象、1.1
      Item 必需的,与被添加的 Key 相关联的 Item、1.2
      Key 必需的,与被添加的 Item 相关联的 Key、1.3
      若添加的key已经存在,则导致一个错误、1.4
    示例代码
      D.Add "A" , "Athens"
      D.Add "a" , "Activate"
        CompareMode 属性(缺省)默认设置为区分大小写,因此不会报错。若设置为不区分大小写,则此句报错
      D.Add "A" , "Athens"
        此句报错误,因关键字key值 “A”,在这之前已经添加
      D.Add Range("A1") , "Abs"
        在 A1 单元格中随意输入 A 或 a
        因省略了.value 在字典中添加关键字时将单元格A1视为对象添加到字典(对象可以重复添加)
        若添加上.value 则会报错,因为 A 或 a 在之前已经创建

2、Exists 方法
    用法 Object.Exists(key)
      如果 Dictionary 对象中存在所指定的关键字,则返回True,否则返回False
      Object 必需的,总是一个Dictionary对象、2.1
      key 必需的,需要在 Dictionary 中搜索的 Key值、2.2
    示例代码
      Debug.Print D.Exists("A")
        返回True,因之前已经添加,因此该关键字 “A” 在字典中存在
      Debug.Print D.Exists("E")
        返回False,因之前代码中未添加,因此该关键字 “E”在字典中不存在
      Debug.Pring D.Exists("a")
        将根据 CompareMode 属性中设置的值来返回

  3、Keys
    用法 Object.Keys()
      返回一个 Variant 类型的一维数组,其中包含了一个 Dictionary 对象中现有的全部 关键字
      3.1、Object 必需的,总是一个 Dictionary 对象
      3.2、如果字典中未添加关键字,则返回一个(0 to -1)的一维数组
    示例代码
      Arr=D.Keys
        运行此代码前,请不要往字典中添加任何关键字
      Arr=D.keys
        自行使用 Add 往字典中添加少许数据进行测试
      Arr=D.Keys()
        将字典中的 关键字 交给数组 Arr
      Range("A1").Resize(,Ubound(Arr)+1).Value=Arr
        将Arr中的值写到单元格中,写到一行里
      Range("A3").Resize(Ubound(Arr)+1).Value=WorksheetFunction.Transpose(Arr)
        将Arr中的值写到一列中,需要进行转置

  4、Items
    用法与 Keys 相同,这里不在做重复的描述
    示例代码中将 Keys 改为 Items 即可

  5、Remove
    用法 Object.Remove(Key)
      从一个 Dictionary 对象中清除 关键字项目对
      5.1、Object 必需的,总是一个 Dictionary 对象
      5.2、Key 必需的,要从 Dictionary 中删除的 关键字 项目对相关联
      5.3、如果 所指定的 关键字 不存在,将返回一个错误
    示例代码
      D.Remove("A")
        从字典中删除关键字是 A 的项目对
      D.Remove("E")
        要删除的关键字 E 在字典中不存在,因此报错误

  6、RemoveAll
    用法 Object.RemoveAll()
      从一个 Dictionary 对象中清除所有关键字项目对
      6.1、Object 必需的,总是一个 Dictionary 对象
    示例代码
      D.RemoveAll
        清除字典 D 中所有的数据,又成了一个新字典了

三、字典4属性
  1、CompareMode  属性
    用法 Object.CompareMode[=Compare]
      设置或者返回在 Dictionary 对象中进行字符串关键字比较时所使用的 比较模式。
      Object 必需的,总是一个Dictionary 对象的名称
      Compare 可选项,如果提供此项,Compare 就是一个代表比较模式的值。
      如果试图对已经包含数据的 Dictionary 对象的比较模式进行更改的话,就会出错
      缺省为 二进制比较格式
    CompareMethod  枚举说明
      1.1、UseCompareOption
        其值为 -1 使用 Option Compare 语句设置值进行比较(Excel中无效)
      1.2、BinaryCompare
        其值为 0 ,二进制比较模式
      1.3、TextCompare
        其值为 1 ,文本比较模式
      1.4、DatabaseCompare
        其值为 2 ,仅用于 MicrosoftAccess,进行基于你自己数据库中信息的比较
      1.5若未引用 scrrun.dll 文件,在使用枚举时需在前面添加上vb
        在VBA中为我们提供了  VbCompareMethod 枚举,其值都是一样的
        即使引用了文件,也可使用 vbTextCompare
        如:vbTextCompare
    在 Add方法中已经有示例了,这里不在做示例

2、Count 属性
    用法 Object。Count
      返回集合或 Dictionary 对象中条目数。只读
      Object 必需的,总是一个 Dictionary 对象
    示例代码
      DeBug.Print D.Count
        返回 0 ,说明字典中还没有条目
      D.add "A","abs"
        往字典中添加条目
      DeBug.Print D.Count
        刚才建了个,所以返回1
      D.Add "V","Vlookup"
        往字典中添加条目
      DeBug.Print D.Count
        刚才又建了一个,返回返回 2

  3、Key 属性
    用法 Object.Key(Key)=NewKey
      3.1、在 Dictionary 对象中修改一个Key
      3.2、Object 必需的,总是一个 Dictionary 对象的名称
      3.3、Key 必需的,被改变的 Key 值
      3.4、NewKey 必需的,替换所指定的 Key的新值。
      3.5、如果在改变一个Key时没发现该 Key ,将会报错。
    示例代码
      d.add "A","Abs"
        d.key("A")="B"
          此时原字典中的关键字 A 被更改为 B
        d.key("A")="B"
          再次运行此代码,因关键字 A已不存在,报错误。
    通俗的理解是,修改 key

  4、Item 属性
    用法 Object.Item(Key)[=NewItem]
      4.1、Item为Dictionary的缺省(默认)属性,因此在使用时可以 d(key)=""
      4.2、在一个 Dictionary 对象中设置或返回所指定 key 的 Item。对于集合则根据所指定的key返回一个 item。读/写
      4.3、Object 必需的,总是一个 Dictionary 对象的名字
      4.4、Key 必需的,与被查找或添加的 item 相关联的 key
      4.5、NweItem 可选项,仅适用于 Dictionary 对象,就是与所指定的 Key 相关联的新值
      4.6、如果在改变一个 key 的Item时候没有该 key ,那么将利用所指定的 NewItem 创建一个新的 Key
      4.7、如果在试图返回一个已有项目的时候没有找到 Key ,那么将创建一个新的 Key 且其相关的项目被设置为空
    示例代码
      D.Add "A","Abs"
        在字典中添加一个关键字 A,它对应的 item是 “Abs”
      D.Item("A")="And"  等同于 D("A")="And"
        将字典中关键字为 A 的Item修改为 “And”
      D.item("E")="Excel"
        试图修改关键字 E 的item为 Excel,因在字典中并没有该关键字的存在,此句起了 add 的作用
      Debug.Print D.Item("B")
        返回字典中关键字为 B 的Item,因字典中并没有添加这个关键字,因此会将该关键字添加到字典中其对应的 Item 为 ""
    根据它的特性,理解为修改指定key的Item,若没有该 key 则根据表达式新建一个,其对应的 Item 将受表达式影响。
  • 中查看更多“VBA字典入门”相关内容
  • 中查看更多“VBA字典入门”相关内容
  • 中查看更多“VBA字典入门”相关内容
  • 中查看更多“VBA字典入门”相关内容
  • 分享到: 微信 更多
    Tags: , , ,
    免费资源 | 评论(0) | 引用(0) | 阅读(9406)

    表情
    emotemotemotemotemot
    emotemotemotemotemot
    emotemotemotemotemot
    emotemotemotemotemot
    emotemotemotemotemot
    打开HTML
    打开UBB
    打开表情
    隐藏
    记住我
    昵称   密码   游客无需密码
    网址   电邮   [注册]