虽然Excel催化剂已经包含了大量的功能,但面对现实工作中,各种纷繁复杂的场景,仍然显得不够。

刚好QQ群里有讨论到学习VBA的话题,也顺带参与了一下,有了Excel催化剂,不止是对零代码使用上带来很大的便利,其实在日常编写VBA代码时,同样可以受益,轻松调用Excel催化剂开发出来的众多自定义函数。

VBA调用自定义函数原理

在工作表自定义函数的开发中,存在两种类似的自定义函数,一种是存储在xlam或xlsm上的,一种存储在xll文件上的。其开启关闭都在Excel普通加载项处,如下图所示。

如果不会打开此对话框,可以更傻瓜式地使用笔者开发的【OFFICE插件管理工具】操作,最新版支持普通加载项管理,如下图。

在VBA代码中,调用工作表自定义函数,只需要使用Application.Run即可,如果有参数就传入参数。具体的使用说明见下图官方文档。第一个参数是宏名称,即自定义函数名称,其他参数为自定义函数使用的参数。

能够使用Application.Run调用加载项的自定义函数的前提是此加载项已经在启用状态,否则是不能生效强行调用会报错。

因为VBA宏支持不同文件、不同模块,多个同名的函数,所以严格的调用自定义函数时,需要引用全名函数

例如如下的test.xlam文件中,有两个模块,分别为模块1、模块2,两个模块中有同一个函数testFunc,为验证结果,返回值将其分别设计为1和2。

在一个新的文件工作薄2.xlsm上调用其函数时,会提示报错,估计因为重名的原因而笔者在引用时没有引用全名,只引用宏名。

当这种同名的情况下,我们工作表函数调用时,也会提示我们选择全路径。

最终我们输入的函数全名时,可以正确使用,全名的输入格式为:

a = Application.Run("test.xlam!模块1.testFunc")

注意:在xll文件中的自定义函数没有全名的概念,所以还是保留着只引用函数名的调用方式,如果有重名,笔者也不知道会出现什么情况,有兴趣的读者可以自行测试

VBA调用Excel催化剂开发的自定义函数效果

因为Excel催化剂使用.net技术开发了大量的自定义函数,所以在VBA的开发过程中,完全可以复用这些的函数,减少自己的代码量,同时因为使用了.net技术,许多在VBA里难以实现的算法,均已经有现成可用了,可以极大地提高自己的开发效率。

具体有哪些自定义函数,及其的使用方法,可以在【功能清单搜索】上,点击【遍历功能清单】,将其所有函数清单遍历出来,供参考。

自定义函数在调用和返回上有以下几种情形

  • 无参数调用

例如这个伪造函数,最精简时可以省略所有参数,调用的方法只需输入函数名。

  • 有参数调用

例如以下的正则函数,也是可以轻松在VBA上使用上,并且是.NET版本的正则,比VBA的正则更好用。

  • 返回多值结果的

Excel催化剂的自定义函数,可以返回多值,并在工作表单元格上自动扩展区域,同样地在VBA调用时,也可以返回多值,如果有Array返回数组结尾的函数尽量用这个函数,而不是自动扩展区域的函数。但经测试,自动扩展区域的函数如GetFiles,也是可用的,具体要自行多测试。

注意自动扩展区域的返回是一个二维数组,而非上方的Array结尾的一维数组。

结语

Excel催化剂不遗余力,花费近3年的时间打造的航空母舰级功能,衷心希望可以更多人从中受益,除了普通用户,其实VBA开发群体亦可以用得上许多能力。

300+个自定义函数,等着你们来掘宝,轻松复用,不必重复造轮子。

excel vba 使用mschart_使用VBA时不妨借力Excel催化剂的能力,开发更加轻松便捷相关推荐

  1. vba 窗体单选框怎么传回sub_VBA之EXCEL应用

    一直以来,总想写一部面对EXCEL的专门VBA教程,今终得如愿.想我初学VBA时,也是从EXCEL入手,不知深浅,也很难窥探到VBA的全貌,花费了大量的时间,走了很多弯路,却难得其所,关键就是没有好的 ...

  2. vba 将数组作为参数传递_将VBA数组写入工作表时转置(Transpose)的利用

    大家好,最近推出的内容是"VBA信息获取与处理"中的部分内容,这套教程面向中高级人员,涉及范围更广,实用性更强,现在的内容是第四个专题"EXCEL工作表数据的读取.回填和 ...

  3. c调用python gensim包_Jupyter Notebooks嵌入Excel并使用Python替代VBA宏

    以前,Excel和Python Jupyter Notebook之间我们只能选择一个.但是现在随着PyXLL-Jupyter软件包的推出,可以将两者一起使用. 在本文中,我将向你展示如何设置在Exce ...

  4. python 调用vba 参数 保存表格_Jupyter Notebooks嵌入Excel并使用Python替代VBA宏

    以前,Excel和Python Jupyter Notebook之间我们只能选择一个. 但是现在随着PyXLL-Jupyter软件包的推出,可以将两者一起使用. 在本文中,我将向你展示如何设置在Exc ...

  5. vba put 语名 delphi 用什么语句_将VBA数组写入工作表时转置(Transpose)的利用

    大家好,最近推出的内容是"VBA信息获取与处理"中的部分内容,这套教程面向中高级人员,涉及范围更广,实用性更强,现在的内容是第四个专题"EXCEL工作表数据的读取.回填和 ...

  6. python可以嵌在vba中吗_Jupyter Notebooks嵌入Excel并使用Python替代VBA宏

    以前,Excel和Python Jupyter Notebook之间我们只能选择一个. 但是现在随着PyXLL-Jupyter软件包的推出,可以将两者一起使用. 在本文中,我将向你展示如何设置在Exc ...

  7. vba mysql·教程_Excel VBA ADO SQL入门教程004:SQL中的Excel表

    1. 上期我们聊了SQL常用查询语句中的字段查询,其简化版语法如下: SELECT 字段名 FROM 表名 当时我们说,FROM关键词指明了要获取字段信息的表的名称.倘若数据源是Excel表格,则需要 ...

  8. excel粘贴 粘贴值 使用VBA宏匹配目标格式

    当您按下键盘上的Ctrl + V键时,也可以使用VBA宏始终默认设置黏贴模式为匹配目标格式.只需执行以下步骤: 步骤1:打开您的Excel工作簿,然后单击开发工具选项卡下的"Visual B ...

  9. excel python插件_再见 VBA!神器工具统一 Excel 和 Python

    大家好,我是东哥. 经常给大家推荐好用的数据分析工具,也收到了铁子们的各种好评.这次也不例外,我要再推荐一个,而且是个爆款神器. Excel和Jupyter Notebok都是我每天必用的工具,而且两 ...

最新文章

  1. java gson使用_Java 中 Gson的使用
  2. linux在文件或文件夹中查找字符串
  3. java for i i 区别,i ++amp;和i ++之间的区别是什么? ++我在for循环(Java)?
  4. 谷歌浏览器32位安装包_谷歌浏览器发布紧急安全更新修复Blink内核中的任意代码执行漏洞...
  5. java解析shell命令_Android中执行java命令的方法及java代码执行并解析shell命令
  6. jieba中文处理的学习
  7. 云消防大数据_消防云大数据
  8. java自学之路-day19
  9. Spring Boot开发八字箴言(以我过去这段时间的经验总结得到)
  10. Facebook、亚马逊等巨头是如何建造自己的数据库的?
  11. J - X and Beasts
  12. 思博伦仪表SRV4(ISIS)测试指南
  13. 药品质量管理软件市场现状及未来发展趋势
  14. matlab二极管怎么跟IGBT相连,Simulink的扩展模块库SimPowerSystems
  15. 一款网页游戏外挂开发-数据抓包2
  16. 推荐一款插件layim.js 阿里大牛贤心制作的一款webim聊天插件
  17. R语言ETL系列:创建字段(mutate)
  18. mysql 错误 1548_mysql报1548错误-Cannot load from mysql.proc. The table is probably corrupted
  19. R语言按照人口比例绘制甘肃地图
  20. 技术术语学习之paradigm

热门文章

  1. 演示如何使用application.yml文件
  2. 中国人民大学_《组织行为学》_16.重塑组织模块导论
  3. bootstrap 彈窗默認打開_Bootstrap 手册 07 - JS 组件篇
  4. 机械师怎么打开计算机管理,机械师创物者-R笔记本智能控制中心使用教程
  5. java 用来查找输出的函数_Solr复杂查询一:函数查询
  6. java文件递归_java递归处理文件夹和文件
  7. Android Stdio使用技巧
  8. java 中while编译之后_从APK反编译的Java-while循环什么也不做
  9. ejabberd java,java-xmpprpc结合ejabberd开发
  10. 获取系统版本号_数据库系统原理