在VBA中,字典(Dictionary)是一种非常重要和常用的数据结构,它提供了一种高效的数据存储和检索方式,可以大大简化代码的编写和提高程序的执行效率。如果你连VBA字典都不会的话,你千万不要在自己的简历中声称自己精通Office,哈哈哈。
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。
黑客&网络安全如何学习
今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。
1.学习路线图
攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。
2.视频教程
网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。
内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。
(都打包成一块的了,不能一一展开,总共300多集)
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
3.技术文档和电子书
技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
4.工具包、面试题和源码
“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。
还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。
这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。
参考解析:深信服官网、奇安信官网、Freebuf、csdn等
内容特点:条理清晰,含图像化表示更加易懂。
内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取