导图内容导图 字典1 什么是VBA字典? 字典(dictionary)跟数组一样都在使用前加载到内存中的数据, 不同于数组的是, 字典是键值对的集合, 类似于Json数据. 如: 字典对象 d = {Key1:值1, Key2:值2, ... ... , Keyn:值n} 使用时, d(key) 就可以获取键Key对应的值. 2 学习字典有什么好处? 提高数据处理的速度, 也是提高工作效率. 1) Key在一个字典对象中具有唯一性, 不存在重复的Key, 但可以有重复的值, 由此特征可以用于去除重数据 2) 因为数据是存储在内存中的, 提取数据的速度当然是快. 3) 只是数组是根据下标提取, 字典是根据唯一Key提取. 3 字典应用的场景 1)当处理的数据包含一个唯一标识和对应值时, 如身份证号, ERP数据中的单号等. 小编在工作中就是通过字典获取单号, 再取每个单号下包含的产品, 填充到一个单据模板中. 2)字典处理的数量不要过大, 大数据量不适合使用字典, 具体多大, 要看你主机的内存有多大了. 4 如何创建字典? 字典是由scrrun.dll链接库提供的,要调用字典有两种方法 第一种方法:直接创建法 Set d = CreateObject('scripting.dictionary') '小编只用这一种, 第二种太麻烦 第二种方法:引用法 工具-引用-浏览-找到scrrun.dll-确定 5 字典应用实例 实例1: Sub 使用字典的Add方法生成字典() ----Dim D ----Dim x As Integer ----Set D = CreateObject('scripting.dictionary') ----For x = 2 To 4 --------D.Add Cells(x, 1).Value, Cells(x, 2).Value '填充字典 ----Next x ----MsgBox D('A') & D('B') & D('C') '读取字典数据 End Sub 字典生成方法1 实例2: 生成字典的第二种方法 Set d = CreateObject('scripting.dictionary') '定义一个字典 ----For l3 = 1 To r ----If Len(VBA.Trim(Cells(l3 + 1, tag).Text)) > 1 Then --------d(VBA.Trim((Cells(l3 + 1, tag)))) = 'abc' '利用字典来过滤重复的单号, 字典值随意,这里我只考虑了key不重复 ----Next l3 End If 源码下载链接: https://pan.baidu.com/s/1a8tkigJ2DJlfqKfJf-CuPQ 密码: asxr 小编写的这个实例, 分享了源码和数据, 测试时建议安装一个虚拟打印机(PDFactory). 我的工作实例 字典就那么简单, 理解了前面说的数组, 这个就不是什么难事儿了. 事件事件这玩意儿, 常用的大都是Excel程序内置的, 按事件的使用范围由小及大: Excel工作表事件 < excel工作薄事件="">< excel=""> 事件操作规则: 1) Excel工作表事件代码只能写在要操作的当前该工作表中, 对其它工作表和工作薄不起作用 2) 同样, Excel工作薄事件也只能写在工作薄代码页中, 事件操作向下兼容, 即可以操作当前工作薄下的工作表. 3) Application 事件, 可以操作所有工作薄及其下属的工作表, 是上帝级的了. 同样是向下兼容. 同时Application的事件操作代码, 可以写在工作表代码页也可以写在工作薄代码页, 也可以写在模块代码页中. 不同于前两个的是, 使用前要创建一个Excel.Application 对象. 如例(必须的操作): Public WithEvents app As Excel.Application '注意: 这是规则的操作代码 并且在使用前, 大都在工作薄的打开事件中进行如此操作(必须的操作): Private Sub Workbook_Open() ----app = Excel.Application '目的是将Excel程序下的事件交给app对象变更来操作. End Sub Excel工作表事件: 操作工作表事件 工作表事件列表 事件描述(建议多动手): 1)SelectionChange 事件: 当你在工作表中对单元格的选取发生改变时触发, 比如, 你当前选中的是单元格 A1, 在你选择除 A1 外的其它单元格时就会触发该事件, 即会执行该事件下的功能代码块. 参数: Target 就是你要选取的单元格区域对象. 选择单元格或区域发生变化时 2)Activate 事件: 当该工作表被激活时触发. 当工作表被激活时 3)BeforeRightClick 事件:右击单元时触发, 因为这个事件也右键菜单重复, 故不建议操作该事件. 4)Calculate 事件: 当公式计算结果发生变化时触发. 5)Deactivate 事件: 与 Activate事件相反, 当离开该工作表, 激活其它工作表时触发. 6)Change 事件: 单元格编辑状态变化时触发. 单元格编辑状态变化时 7)FollowHyperlink 事件: 点击表中超链接时触发. 8)PivotTableUpdate 事件: 数据透视表更新时触发. Excel工作薄事件: 工作薄事件操作 小编懒了, 请在vba编辑窗口下按 F1: 事件帮助 那点击Activate事件进去看看, 说明很详细: Activate事件帮助 Application 事件: Application对象事件 小编这里就抛砖引玉了, 帮助文档里每个事件都详细的说明和实例代码. application事件说明 除了以前和以上说过的这些基础内容, VBA还有更高深的东西在里, 建议大家百度搜索一下 兰色幻想 老师的视频看看. 当然, 如果只是学个基础, 就像小编一样, 看完小编写的东西就基本可以解决工作中的大多小问题了. 像窗体控件的操作, 插件的开发, 兰色幻想老师的视频里都有讲, 小编不做什么大的工程就没认真学这些. 小编学到的所有VBA知识就只能分享这些了. 希望小编的汗水能帮助大伙解决一些燃眉之急的小问题. 也希望与大家在工作生活中多多交流, 小编在IT上涉猎广泛, 希望与各方朋友互相学习沟通交流! 谢谢各位朋友的支持和赞许. 以后的文章, 小编学到什么就分享些什么吧! 对大家有帮助的就给个关注或点个赞啥的就行了. 谢谢各路英雄好汗的关注和点赞 |
|
来自: 昵称11935121 > 《未命名》