ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[原创] VBA回调函数作用讲解

[复制链接]

TA的精华主题

TA的得分主题

发表于 2021-11-27 21:13 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
905738810 发表于 2021-11-27 20:53
ppt我的工作用不到,从来没研究过

:Implements(接口)

我还是推荐这种部分多态的方法,
https://docs.microsoft.com/zh-cn/office/vba/language/reference/user-interface-help/implements-statement
vba的设计模式比较少,api传入函数地址,实际上算是一部分回调,在vba来说应该部分算,因为,普遍性的认为,vba不是直接官方支持指针。
c用的比较多
https://www.jianshu.com/p/2f695d6fd64f
纯粹的算法库,效率最高的一定是c语言开发的,vba是解释性的,相对用慢些。

TA的精华主题

TA的得分主题

发表于 2021-11-28 05:58 来自手机 | 显示全部楼层
905738810 发表于 2021-11-27 14:57
说完回调函数,我再说VBA里回调函数实现的方法
很遗憾VBA里的回调函数实现的方法都有缺点
我总结出五种方 ...

https://answers.microsoft.com/en-us/msoffice/forum?sort=LastReplyDate&dir=Desc&tab=All&status=all&mod=&modAge=&advFil=&postedAfter=&postedBefore=&threadType=All&isFilterExpanded=false&page=1
你2021报啥错,这里有个论坛,貌似有ms的人。

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-11-28 08:44 | 显示全部楼层
dongdonggege 发表于 2021-11-27 20:18
请问老师,数字排序演示程序,
Excel运行的结果21,10,9,8,1,
而PowerPoint运行是10,8,21,9,1。

对于你的问题今天又看了下没,对于ppt和excel他们的VB语法肯定一样的,唯一不同的是Application对象,
这个代码里我用的对象方法就只有run了,然后去ppt测试一下发现果然出在了run方法上。
在excel中使用run,传递的到函数值很正确如图
image.png
在ppt中传递的值并不是真实内容,而是内存地址如下两幅图:
image.png
image.png
让我奇怪的是如果改成传递变量又正确了如图:
image.png
ppt里这点感觉有点不友好啊,我也没用过ppt,不好深入评价他
最后发一个修改后的运行结果
image.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-11-28 09:03 | 显示全部楼层
zpy2 发表于 2021-11-27 21:13
:Implements(接口)

我还是推荐这种部分多态的方法,

感谢点评,我很赞同你的的观点,vba没有真正意义上的回调函数方法,只能通过手段去模仿回调函数,
采用接口实现回调的在VBA里我认为也是最靠谱的,就是我说的第四种方法: image.png
VBA用户群体里理解接口的人有点少,我也是看了一篇国外的例子才理解他的奥妙
借着回复的机会我就直接把例子分享出来,让更多的人看到
https://stackoverflow.com/questions/19373081/how-to-use-the-implements-in-excel-vba

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-11-28 09:07 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
zpy2 发表于 2021-11-28 05:58
https://answers.microsoft.com/en-us/msoffice/forum?sort=LastReplyDate&dir=Desc&tab=All&status=all& ...

不报错,直接闪退了,我找两个朋友帮我测试都是这个结果,我瞎猜2021的内存又优化了

TA的精华主题

TA的得分主题

发表于 2021-11-28 09:51 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2021-11-28 09:59 来自手机 | 显示全部楼层
905738810 发表于 2021-11-28 09:07
不报错,直接闪退了,我找两个朋友帮我测试都是这个结果,我瞎猜2021的内存又优化了

https://bbs.pediy.com/thread-267295.htm
这个可能要IDA windebug进行底层研究了

TA的精华主题

TA的得分主题

发表于 2021-11-28 13:20 | 显示全部楼层
905738810 发表于 2021-11-28 08:44
对于你的问题今天又看了下没,对于ppt和excel他们的VB语法肯定一样的,唯一不同的是Application对象,
...

谢谢答复,虽然结果没变。

TA的精华主题

TA的得分主题

发表于 2021-11-28 14:58 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
有一些 并不是 回调函数, 是事件.

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-11-28 15:27 | 显示全部楼层
boy8199 发表于 2021-11-28 14:58
有一些 并不是 回调函数, 是事件.

事件和回调是两个不同的概念,我所发的那些并没有事件,可以去了解一下什么是事件
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-6-16 22:57 , Processed in 0.040964 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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