当前位置 博文首页 > 文章内容

    使用VBA时不妨借力Excel催化剂的能力,让你的开发更加轻松便捷

    作者: 栏目:未分类 时间:2020-09-25 18:01:55

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



    虽然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。

    image-20200925170951009

    在一个新的文件工作薄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+个自定义函数,等着你们来掘宝,轻松复用,不必重复造轮子。