问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

VBA字典之基本概念和基本用法(非常详细)零基础入门到精通,收藏这一篇就够了

创作时间:
作者:
@小白创作中心

VBA字典之基本概念和基本用法(非常详细)零基础入门到精通,收藏这一篇就够了

引用
CSDN
1.
https://m.blog.csdn.net/Javachichi/article/details/139282805

在VBA中,字典(Dictionary)是一种非常重要和常用的数据结构,它提供了一种高效的数据存储和检索方式,可以大大简化代码的编写和提高程序的执行效率。本文将详细介绍VBA字典的基本概念、特点以及具体的使用方法,包括创建字典、装入数据、读取数据、修改数据和删除数据等操作。

1. 什么是字典

字典是一种用于存储数据的数据结构,类似于一个小型仓库。字典包含两列:第一列是key(键),每个key都是唯一的;第二列是item(值),可以重复。每个key对应一个item,也就是我们常说的键值对。

例如:

key
item
刘备
62
孙权
70
曹操
65

2. 字典的特点

字典具有速度快的特点,可以快速地查找和提取数据。例如,通过指定key的数值,可以立即返回对应的item,实现快速查找。此外,字典中的key列只能存储非重复的元素,方便提取不重复的数值。然而,字典也有其局限性,由于只能包含两列数据,所以处理多列数据需要通过字符串的组合和拆分来实现。此外,字典调用也会耗费一定时间,对于数据量较小的情况,字典的速度优势可能无法体现出来。

3. 创建字典

创建字典有两种方法。

方法一:直接创建法

Set d = CreateObject("scripting.dictionary")

这种方法的缺点是无法直接查看字典对象的方法和属性。

方法二:引用法

工具 -> 引用-> 浏览 -> 找到scrrun.dll -> 确定 -> 勾选Microsoft Scripting Runtime-确定。

这种方法的缺点是其他人在拷贝代码后需要手动引用字典对象才能使用。

因此,为了方便自己编写代码和与他人分享代码,我一般都是同时采用这两种方法来创建字典对象。这样既能保证自己编写代码的便利性,又能避免他人在使用时需要额外引用字典对象的麻烦。

4. 使用字典:装入数据

把单元格区域[A2:B4]的值装入字典。

Sub test()
    Dim d As New Dictionary '创建一个字典
    Dim i As Integer
    For i = 2 To 4
        d.Add Cells(i, 1).Value, Cells(i, 2).Value '把姓名列装到字典的第1列,把年龄列装到字典的第2列
    Next i
    MsgBox d.Keys(1) '查看字典中第1列中的第2个值
End Sub

输出结果:

5. 使用字典:读取数据

把[A2:A4]的值读取到[D1:D3],把[B2:B4]的值读取到[E1:E3]。

Sub test()
    Dim d As New Dictionary '创建一个字典
    Dim i As Integer
    For i = 2 To 4
        d.Add Cells(i, 1).Value, Cells(i, 2).Value '把姓名列装到字典的第1列,把年龄列装到字典的第2列
    Next i
    Range("d1").Resize(d.Count) = Application.Transpose(d.Keys) '第一列的集合
    Range("e1").Resize(d.Count) = Application.Transpose(d.Items) '第二列的集合
End Sub

输出结果:

6. 使用字典:修改数据

修改曹操的年龄为66岁,并添加一行,诸葛亮:53岁。

Sub test()
    Dim d As New Dictionary '创建一个字典
    Dim i As Integer
    For i = 2 To 4
        d.Add Cells(i, 1).Value, Cells(i, 2).Value '把姓名列装到字典的第1列,把年龄列装到字典的第2列
    Next i
    d("曹操") = 66 '修改曹操的年龄为66岁
    d("诸葛亮") = 53 '添加诸葛亮,年龄为53岁
    MsgBox d("曹操")
    MsgBox d("诸葛亮")
End Sub

输出结果:

7. 使用字典:删除数据

从字典中删除孙权。

Sub test()
    Dim d As New Dictionary '创建一个字典
    Dim i As Integer
    For i = 2 To 4
        d.Add Cells(i, 1).Value, Cells(i, 2).Value '把姓名列装到字典的第1列,把年龄列装到字典的第2列
    Next i
    d.Remove ("孙权") '删除孙权
    MsgBox d.Exists("孙权")
End Sub

输出结果:

由于孙权已经从字典中删除,所以不存在,弹出消息:False。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号