excel vba 使用mschart_使用VBA时不妨借力Excel催化剂的能力,开发更加轻松便捷
雖然Excel催化劑已經(jīng)包含了大量的功能,但面對(duì)現(xiàn)實(shí)工作中,各種紛繁復(fù)雜的場景,仍然顯得不夠。
剛好QQ群里有討論到學(xué)習(xí)VBA的話題,也順帶參與了一下,有了Excel催化劑,不止是對(duì)零代碼使用上帶來很大的便利,其實(shí)在日常編寫VBA代碼時(shí),同樣可以受益,輕松調(diào)用Excel催化劑開發(fā)出來的眾多自定義函數(shù)。
VBA調(diào)用自定義函數(shù)原理
在工作表自定義函數(shù)的開發(fā)中,存在兩種類似的自定義函數(shù),一種是存儲(chǔ)在xlam或xlsm上的,一種存儲(chǔ)在xll文件上的。其開啟關(guān)閉都在Excel普通加載項(xiàng)處,如下圖所示。
如果不會(huì)打開此對(duì)話框,可以更傻瓜式地使用筆者開發(fā)的【OFFICE插件管理工具】操作,最新版支持普通加載項(xiàng)管理,如下圖。
在VBA代碼中,調(diào)用工作表自定義函數(shù),只需要使用Application.Run即可,如果有參數(shù)就傳入?yún)?shù)。具體的使用說明見下圖官方文檔。第一個(gè)參數(shù)是宏名稱,即自定義函數(shù)名稱,其他參數(shù)為自定義函數(shù)使用的參數(shù)。
能夠使用Application.Run調(diào)用加載項(xiàng)的自定義函數(shù)的前提是此加載項(xiàng)已經(jīng)在啟用狀態(tài),否則是不能生效強(qiáng)行調(diào)用會(huì)報(bào)錯(cuò)。
因?yàn)閂BA宏支持不同文件、不同模塊,多個(gè)同名的函數(shù),所以嚴(yán)格的調(diào)用自定義函數(shù)時(shí),需要引用全名函數(shù)
例如如下的test.xlam文件中,有兩個(gè)模塊,分別為模塊1、模塊2,兩個(gè)模塊中有同一個(gè)函數(shù)testFunc,為驗(yàn)證結(jié)果,返回值將其分別設(shè)計(jì)為1和2。
在一個(gè)新的文件工作薄2.xlsm上調(diào)用其函數(shù)時(shí),會(huì)提示報(bào)錯(cuò),估計(jì)因?yàn)橹孛脑蚨P者在引用時(shí)沒有引用全名,只引用宏名。
當(dāng)這種同名的情況下,我們工作表函數(shù)調(diào)用時(shí),也會(huì)提示我們選擇全路徑。
最終我們輸入的函數(shù)全名時(shí),可以正確使用,全名的輸入格式為:
a = Application.Run("test.xlam!模塊1.testFunc")注意:在xll文件中的自定義函數(shù)沒有全名的概念,所以還是保留著只引用函數(shù)名的調(diào)用方式,如果有重名,筆者也不知道會(huì)出現(xiàn)什么情況,有興趣的讀者可以自行測試
VBA調(diào)用Excel催化劑開發(fā)的自定義函數(shù)效果
因?yàn)镋xcel催化劑使用.net技術(shù)開發(fā)了大量的自定義函數(shù),所以在VBA的開發(fā)過程中,完全可以復(fù)用這些的函數(shù),減少自己的代碼量,同時(shí)因?yàn)槭褂昧?net技術(shù),許多在VBA里難以實(shí)現(xiàn)的算法,均已經(jīng)有現(xiàn)成可用了,可以極大地提高自己的開發(fā)效率。
具體有哪些自定義函數(shù),及其的使用方法,可以在【功能清單搜索】上,點(diǎn)擊【遍歷功能清單】,將其所有函數(shù)清單遍歷出來,供參考。
自定義函數(shù)在調(diào)用和返回上有以下幾種情形
- 無參數(shù)調(diào)用
例如這個(gè)偽造函數(shù),最精簡時(shí)可以省略所有參數(shù),調(diào)用的方法只需輸入函數(shù)名。
- 有參數(shù)調(diào)用
例如以下的正則函數(shù),也是可以輕松在VBA上使用上,并且是.NET版本的正則,比VBA的正則更好用。
- 返回多值結(jié)果的
Excel催化劑的自定義函數(shù),可以返回多值,并在工作表單元格上自動(dòng)擴(kuò)展區(qū)域,同樣地在VBA調(diào)用時(shí),也可以返回多值,如果有Array返回?cái)?shù)組結(jié)尾的函數(shù)盡量用這個(gè)函數(shù),而不是自動(dòng)擴(kuò)展區(qū)域的函數(shù)。但經(jīng)測試,自動(dòng)擴(kuò)展區(qū)域的函數(shù)如GetFiles,也是可用的,具體要自行多測試。
注意自動(dòng)擴(kuò)展區(qū)域的返回是一個(gè)二維數(shù)組,而非上方的Array結(jié)尾的一維數(shù)組。
結(jié)語
Excel催化劑不遺余力,花費(fèi)近3年的時(shí)間打造的航空母艦級(jí)功能,衷心希望可以更多人從中受益,除了普通用戶,其實(shí)VBA開發(fā)群體亦可以用得上許多能力。
300+個(gè)自定義函數(shù),等著你們來掘?qū)?#xff0c;輕松復(fù)用,不必重復(fù)造輪子。
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的excel vba 使用mschart_使用VBA时不妨借力Excel催化剂的能力,开发更加轻松便捷的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三级网络技术_三级网络技术考前选择题—V
- 下一篇: ggplot2设置坐标轴范围_Matpl