更新:科目余额表逐级汇总,工作表Change事件,自动刷新汇总数据;Application.EnableEvents属性

文摘   教育   2024-10-09 23:19   江苏  

点【关于本公众号】了解一下,欢迎关注谢谢!

快速浏览

实用案例

|日期控件||简单的收发存||收费管理系(Access改进版)|

|电子发票管理助手||电子发票登记系统(Access版)|

|文件合并||表格拆分||审计凭证抽查底稿|

|中医诊所收费系统(Excel版)||中医诊所收费系统(Access版)||银行对账单自动勾对|

|印章使用登记系统|

收费使用项目

|财务管理系统||工资薪金和年终奖个税筹划||新税法下工资表模版|

内容提要

  • 案例更新:科目余额表逐级汇总
  • Application.EnableEvents
大家好,我是冷水泡茶,前天我们分享了一个案例:

逐级汇总(数组、字典):财务同学看过来,科目余额表逐级汇总

我在结尾的时候,提到想使用工作表Change事件实现自动汇总的,但考虑到可能会再次触发工作表的Change事件,造成死循环。后来有朋友留言说:

后记2,死循环,不是加Application.EnableEvents=False临时关闭事件触发,代码结束后再打开吗?

仔细一想,有道理啊,说实话,EnableEvents属性我有点印象,但好像从来没有用过,也难怪想不到这种解决思路。
于是,决定更新一下吧,再碰到类似情况,就知道怎么处理啦。
基本思路:
1、当科目余额表数据区域,即科目代码、金额发生改变时,调用汇总过程(科目名称改变也会触发,只不过汇总结果没有变化)。
2、为了避免回写数据时,再次触发工作表的Change事件,我们使用EnableEvents属性,把它设置为FALSE,禁止触发事件,在数据写完后,再设置为TRUE,恢复正常触发事件:
Application.EnableEvents = FalseCall mySumByLevelApplication.EnableEvents = True
这段代码是写在工作表的Change事件里的,也可以写到mySumByLevel中,在过程开头设置为FALSE,过程结束设置为TRUE,也可以更准确一点,写在向工作表写入数据的前后位置,也就是可能触发工作表Change事件的位置。
3、为了把汇总科目末级科目作一个区分,我们把汇总科目所在行底色设置为淡黄色,字体加粗,末级科目没有底色,正常字体,这样看起来就比较清楚。

示例代码详见当天另一条推文。

后记

1、我后来也测试了一下,不设置EnableEvents属性,程序也能运行,但速度明显变慢,应该是多次触发了工作表的Change事件造成的影响,但没有进入死循环,这是为啥呢?我也不去深究了,有谁能解释一下?

2、Application对象有很多属性与方法,比如我们常用的ScreenUpdating、DisplayAlerts等等,本来还想写一篇关于它的详细内容的,但一看时间有点来不及了,以后再说吧,反正网上一搜一大把

好,今天就到这里,我们下期再会!


~~~~~~End~~~~~~

安利小店
安利的牙膏非常不错,用了以后就不想再用其他的了;洗洁精洗衣液也是日常必备,用过都说好!

合谷医疗
合谷医疗专攻各种疑难杂症,尤其擅长抑郁症焦虑失眠儿童神经发育异常多动症自闭孤独症腰颈椎疾病治疗,可谓神乎其技!体验过的直呼早点来就好了

喜欢就点个、点在看留言评论、分享一下呗!感谢支持!

案例文件分享说明

  • 案例文件可免费分享,但需符合以下要求:

  • 关注点赞点在看点...留言,方便的话分享一下就完美啦!如果不便走上面的“流程”,请打赏,万分感谢!

  • 请添加上方我的合谷医疗企业微信,案例文件通过微信发送。如有定制需求,亦可通过微信联系。

  • Excel问题,请在文章下面留言讨论!或者加入我的付费交流群提问

VBA编程实战
Excel应用案例、Excel VBA、公式函数使用技巧分享,思路解读...... 这里有鲜活案例、实用的技巧......
 最新文章