[英]How to store and use a VBA Function within a worksheet (not workbook)
我一直在尋找這個問題的答案,但似乎不走運。
我有一個自定義函數,我希望將其存儲在單個工作表中,以便該函數可以與工作表(即不是工作簿)一起分發
需要從excel單元格公式調用自定義函數
當存儲在代碼模塊中時調用該函數可以正常工作,但是將其移動到工作表對象“模塊”中會導致它失敗。 這或許是意料之中的。
想要將函數放置在工作表代碼中的原因是,它會通過模板文件夾與工作表一起自動導入到新工作簿,然后可供工作簿的其余部分使用。 (這是通過插入>新工作表對話框導入的
所以我的問題是 2 倍,要么:
當函數寫在工作表代碼中時,如何從 Excel 公式調用函數,或者...
當我從模板文件添加工作表時,如何自動將模塊添加到新工作簿?
值得注意的是,使用personal.xlsb 文件對此不起作用,我需要能夠從工作表公式中調用該函數
提前致謝
您可以將以下內容添加到工作簿正在導入的工作簿的ThisWorkbook
事件中,根據需要進行調整。 我在 Sheet1 中有一個工作表函數,名為ns
它需要兩個參數a
和b
,我希望使用的 Excel 中的函數是MY_FUNCTION
這將添加一個模塊來保存工作表函數的包裝器。
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Dim vbp As VBProject
Dim vbm As VBComponent
Set vbp = Application.VBE.ActiveVBProject
Set vbm = vbp.VBComponents.Add(vbext_ct_StdModule)
vbm.Name = "MY_FUNCTION_MDL"
' vbm.CodeModule.AddFromFile "" ' <--- another way add from file
vbm.CodeModule.InsertLines 1, "Public Function MY_FUNCTION(a,b)"
vbm.CodeModule.InsertLines 2, " MY_FUNCTION=sheet1.ns(a,b)"
vbm.CodeModule.InsertLines 3, "End Function"
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.