VBA入门到进阶常用知识代码总结27

第27集 VBA字典一
114、 什么是VBA字典
字典(dictionary)是一个储存数据的小仓库。共有两列。
第一列Key(关键字), 不允许有重复的元素。
第二列Item(条目),每一个key对应一个Item,允许重复
索引号 Key Item
0 A 10
1 B 20
2 C 30
3 Z 10
字典对象只有4个属性和6个方法。
字典对象的属性有4个:Count属性、Key属性、Item属性、CompareMode属性。
字典对象的方法有6个:Add方法、Keys方法、Items方法、Exists方法、Remove方法、RemoveAll方法。

115、 既然有数组,为什么还要学字典?
原因:提速,具体表现在:

  1. A列只能装入非重复的元素,利用这个特点可以很方便的提取不重复的值
  2. 每一个Key对应一个唯一的Item,只要指点Key的值,就可以马上返回其对应的Item,利用字典可以实现快速的查找
    116、 字典有什么局限?
    字典只有两列,如果要处理多列的数据,还需要通过字符串的组合和拆分来实现。
    字典调用会耗费一定时间,如果是数据量不大,字典的优势就无法体现出来。
    117、 字典在哪里?如何创建字典?
    字典是由scrrun.dll链接库提供的,要调用字典有两种方法:
    第一种方法:直接创建法或后期绑定(看不到字典的属性,方法列表)
    Set d = CreateObject(“Scripting.Dictionary”)
    第二种方法:引用法或前期绑定(能看到字典的属性,方法列表)
    工具-引用-浏览-找到scrrun.dll-确定
    118、 装入数据
    d.Add
    Sub t1()
    Dim d As New Dictionary '引用法声明一个字典d,直接创建法不能这样写
    Dim x As Integer
    For x = 2 To 4
    d.Add Cells(x, 1).Value, Cells(x, 2).Value '字典可装入对象、值等,所以value不可省略
    Next x
    MsgBox d.Keys(1) '字典Key的索引号默认从0开始, 直接创建法不能用这种写法
    End Sub
    119、 读取数据
    d.Count
    Sub t2()
    Dim d
    Dim arr
    Dim x As Integer
    Set d = CreateObject(“Scripting.Dictionary”) '直接创建法创建字典d
    For x = 2 To 4
    d.Add Cells(x, 1).Value, Cells(x, 2).Value
    Next x
    MsgBox d(“李四”) '创建法直接显示李四对应的Item,即年龄56
    'MsgBox d.Keys(2) 使用创建法,这种写法将出错
    Range(“d1”).Resize(d.Count) = Application.Transpose(d.Keys) 'd.Keys是一个一维数组,放入列中需转置
    Range(“e1”).Resize(d.Count) = Application.Transpose(d.Items) 'd.Itemss是一个一维数组,放入列中需转置
    arr = d.Items
    End Sub
    120、 修改数据
    d(“XX”) 相当于d.Item(“XX”)=0,修改条目,前面出现会被覆盖.包括条目
    Sub t3()
    Dim d As New Dictionary
    Dim x As Integer
    For x = 2 To 4
    d.Add Cells(x, 1).Value, Cells(x, 2).Value
    Next x
    d(“李四”) = 78
    MsgBox d(“李四”)
    d(“赵六”) = 100 '赵六不存在,字典将新增一条记录
    MsgBox d(“赵六”)
    End Sub
    121、 删除数据
    d.Remove “key值”
    d.RemoveAll 清除字典里所有关键词,且还清除其结构,Count将等于0
    Sub t4()
    Dim d As New Dictionary
    Dim x As Integer
    For x = 2 To 4
    d(Cells(x, 1).Value) = Cells(x, 2).Value
    Next x
    d.Remove “李四”
    ’ MsgBox d.Exists(“李四”)
    d.RemoveAll
    MsgBox d.Count
    End Sub
    122、 区分大小写
    d.CompareMode=1不区分大小写,d.CompareMode=0区分大小写,默认区分,因此我们只有在不区分时才补上这句
    Sub t5()
    Dim d As New Dictionary
    Dim x
    For x = 1 To 5
    d(Cells(x, 1).Value) = “”
    Next x
    Stop
    End Sub
发布了47 篇原创文章 · 获赞 0 · 访问量 222

猜你喜欢

转载自blog.csdn.net/tiansdk320/article/details/104364743