打开APP
userphoto
未登录

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

开通VIP
EnableEvents的使用

VBA不相信连锁反应

前面我们讲了Workbook和Worksheet的各种事件,让大家熟悉了各种用于折腾的事件。学完之后,你觉得自己功力大进,马上就要无敌手了。
正在这时,老板又出现了,给你布置了一个新任务。

有一个表格要输入数据,但产品经理的要求是,每输完一个数字,就要在这个数字下面的单元格显示“√”。

你故作为难:老板啊,这个很难实现呐,估计得半天才能做好啊!

但其实你是知道的,这个用我们刚学过的worksheet的事件,分分钟就搞定了呀!哈哈,又多出来半天的偷懒时间,完美!

捣鼓了一分钟,成品出炉了

Private Sub Worksheet_Change(ByVal Target As Range)    Target.Offset(1, 0) = '√' End Sub

:√有快捷输入方式:在用全键盘的情况下,先按住alt,然后依次按小键盘上的41420。我是不会告诉你我是花了多久才学到这个小窍门的:)

运行一下,就可以去喝着咖啡刷知乎了!

咦?为什么出来这么多√?什么鬼?

Google了这个问题之后,你终于恍然大悟了!

原来,第一个单元格输入内容之后,计算机检测到了变化,就在下面的单元格中输入了一个√。
但这还没完,系统检测到怎么有一个单元格的内容从空白变成了√,又要触发一次change事件。
相同的故事还在继续,change事件被连锁地触发了,然后你就傻了。。。

解决方法很简单,Application对象有一个EnableEvent属性,在Change事件中,需要把这个关掉,后面再打开。

Private Sub Worksheet_Change(ByVal Target As Range)    Application.EnableEvents = False    Target.Offset(1, 0) = '√'    Application.EnableEvents = True End Sub

再试一下,搞定!


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
 Excel-工作表change事件
学习VBA,报表做到飞 第五章 事件篇 5.6 Worksheet_Change事件
EnableEvents事件的理解
Excel-VBA:13、Excel事件程序
跟烟花入门VBA之56:工作表对象Worksheet(十一)
如何检测单元格内容改变
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服