excel vba 使用mschart_使用VBA时不妨借力Excel催化剂的能力,开发更加轻松便捷
雖然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+個自定義函數,等著你們來掘寶,輕松復用,不必重復造輪子。
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的excel vba 使用mschart_使用VBA时不妨借力Excel催化剂的能力,开发更加轻松便捷的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三级网络技术_三级网络技术考前选择题—V
- 下一篇: ggplot2设置坐标轴范围_Matpl