ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1315|回复: 8

[求助] 我是从Java阵营过来的,问一个VBA如何获取事件源

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-1-13 13:22 | 显示全部楼层 |阅读模式
java中的控件也有click,moveover等事件,可以通过event类的getSource()方法返回一个Object类对像,该对象表示触发该事件的源. 比如你单击了一个button触发了click事件,则getSource()返回的就是这个button对象.这样做有一个好处,就是万一button的name属性变了,也不影响代码执行,提高了代码的通用性.
百度了一圈也没在vba中找到实现这种功能的方法,想问一个下vba没有这样的功能吗?


PS:看惯了java再看vba,语句真别扭啊.

TA的精华主题

TA的得分主题

发表于 2020-1-13 14:21 来自手机 | 显示全部楼层
你可以搜一下 类 ,withevents关键词,有可能是你需要的,但是有java了,也不一定要vba吧

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-1-13 22:21 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
zpy2 发表于 2020-1-13 14:21
你可以搜一下 类 ,withevents关键词,有可能是你需要的,但是有java了,也不一定要vba吧

主要是因为vba操作excel更方便。我觉得vba面向对像的还不够彻底,语法也怪怪的,对象的方法和属性调用到现在也还不习惯。

TA的精华主题

TA的得分主题

发表于 2020-1-13 22:28 来自手机 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2020-1-13 23:03 | 显示全部楼层
vba也有class module的
一般用多了會把所有控件全放在class module實現類的操作

TA的精华主题

TA的得分主题

发表于 2020-1-14 06:37 来自手机 | 显示全部楼层
tomsmish 发表于 2020-1-13 22:21
主要是因为vba操作excel更方便。我觉得vba面向对像的还不够彻底,语法也怪怪的,对象的方法和属性调用到 ...

方便倒是不见得,语法比较简洁吧,最近正好在学java,不过我倒是觉得java语法比较奇怪,确切的说是太繁琐了。
还有,vba对象没有继承。。
Screenshot_2020-01-14-06-32-51.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-1-21 09:26 | 显示全部楼层
liucqa 发表于 2020-1-13 22:28
莫非你问的是caller?

不是caller,试了试caller,不是我要的结果.

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-1-21 09:30 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
zpy2 发表于 2020-1-14 06:37
方便倒是不见得,语法比较简洁吧,最近正好在学java,不过我倒是觉得java语法比较奇怪,确切的说是太繁琐 ...

java的语法有点像C语言,有许多(){},程序的层次看起来更清析,变量的作用域也一目了然.另外Java里只要是方法,后面必有();只要是操作类的属性,必用getXX()或setXX()方法,这也是面向对象编程对封装的体现.

TA的精华主题

TA的得分主题

发表于 2020-1-21 09:55 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
tomsmish 发表于 2020-1-21 09:30
java的语法有点像C语言,有许多(){},程序的层次看起来更清析,变量的作用域也一目了然.另外Java里只要是方 ...

畢竟vba是承於vb6的,也就20年沒有更新了,不能要求太多
方法的調用你可能覺得別扭一點, 是啊, 只有要輸出什麼時 debug.print, xx = xx 時才需()
一般時不需(), 這個可能你不習慣吧
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-26 21:13 , Processed in 0.036373 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表