打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
自定义函数,系统函数,数组,字典,事件(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

字典生成方法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上涉猎广泛, 希望与各方朋友互相学习沟通交流! 谢谢各位朋友的支持和赞许.

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

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

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Excel VBA解读(79):让Excel动起来——认识事件过程
VBA常用对象概述(转载)
菜鸟谈VBA最最基础入门(二)
VBA 禁用单元格拖放功能 限定事件作用区域
VBA--事件过程
excel工作表事件(VBA80第17集)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服