分享

自定义函数,系统函数,数组,字典,事件(VBA)(下)

 昵称11935121 2018-07-03

导图

自定义函数,系统函数,数组,字典,事件(VBA)(下)

内容导图


字典


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

自定义函数,系统函数,数组,字典,事件(VBA)(下)

字典生成方法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).

自定义函数,系统函数,数组,字典,事件(VBA)(下)

我的工作实例

字典就那么简单, 理解了前面说的数组, 这个就不是什么难事儿了.


事件


事件这玩意儿, 常用的大都是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工作表事件:

自定义函数,系统函数,数组,字典,事件(VBA)(下)

操作工作表事件

自定义函数,系统函数,数组,字典,事件(VBA)(下)

工作表事件列表

事件描述(建议多动手):

1)SelectionChange 事件: 当你在工作表中对单元格的选取发生改变时触发, 比如, 你当前选中的是单元格 A1, 在你选择除 A1 外的其它单元格时就会触发该事件, 即会执行该事件下的功能代码块.

参数: Target 就是你要选取的单元格区域对象.

自定义函数,系统函数,数组,字典,事件(VBA)(下)

选择单元格或区域发生变化时

2)Activate 事件: 当该工作表被激活时触发.

自定义函数,系统函数,数组,字典,事件(VBA)(下)

当工作表被激活时

3)BeforeRightClick 事件:右击单元时触发, 因为这个事件也右键菜单重复, 故不建议操作该事件.

4)Calculate 事件: 当公式计算结果发生变化时触发.

5)Deactivate 事件: 与 Activate事件相反, 当离开该工作表, 激活其它工作表时触发.

6)Change 事件: 单元格编辑状态变化时触发.

自定义函数,系统函数,数组,字典,事件(VBA)(下)

单元格编辑状态变化时

7)FollowHyperlink 事件: 点击表中超链接时触发.

8)PivotTableUpdate 事件: 数据透视表更新时触发.


Excel工作薄事件:

自定义函数,系统函数,数组,字典,事件(VBA)(下)

工作薄事件操作

小编懒了, 请在vba编辑窗口下按 F1:

自定义函数,系统函数,数组,字典,事件(VBA)(下)

事件帮助

那点击Activate事件进去看看, 说明很详细:

自定义函数,系统函数,数组,字典,事件(VBA)(下)

Activate事件帮助


Application 事件:

自定义函数,系统函数,数组,字典,事件(VBA)(下)

Application对象事件

小编这里就抛砖引玉了, 帮助文档里每个事件都详细的说明和实例代码.

自定义函数,系统函数,数组,字典,事件(VBA)(下)

application事件说明

除了以前和以上说过的这些基础内容, VBA还有更高深的东西在里, 建议大家百度搜索一下 兰色幻想 老师的视频看看.

当然, 如果只是学个基础, 就像小编一样, 看完小编写的东西就基本可以解决工作中的大多小问题了.

像窗体控件的操作, 插件的开发, 兰色幻想老师的视频里都有讲, 小编不做什么大的工程就没认真学这些. 小编学到的所有VBA知识就只能分享这些了.

希望小编的汗水能帮助大伙解决一些燃眉之急的小问题. 也希望与大家在工作生活中多多交流, 小编在IT上涉猎广泛, 希望与各方朋友互相学习沟通交流! 谢谢各位朋友的支持和赞许.

以后的文章, 小编学到什么就分享些什么吧! 对大家有帮助的就给个关注或点个赞啥的就行了.

自定义函数,系统函数,数组,字典,事件(VBA)(下)

谢谢各路英雄好汗的关注和点赞

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多