我一直在寻找答案,但似乎不走运。
我有一个自定义函数,希望将其存储在单个工作表中,以便可以随工作表(即不是工作簿)一起分发该函数
需要从excel单元格公式调用自定义函数
在存储在代码模块中时调用该函数可以很好地工作,但是将其移到工作表对象“模块”中会导致其失败。这也许是意料之中的。
希望将功能放置在工作表代码中的原因是,它可以将它与工作表一起通过templates文件夹自动导入到新工作簿中,然后可供工作簿的其余部分使用。 (这是通过Insert> New Sheet对话框
导入的所以我的问题是2折:
在工作表代码中编写函数时如何从excel公式调用函数,或者...
当我从模板文件添加工作表时,如何自动将模块添加到新工作簿中?
值得注意的是,使用personal.xlsb文件将无法正常运行,我需要能够从工作表公式中调用函数
预先感谢
答案 0 :(得分:1)
您可以将以下内容添加到要导入工作表的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
答案 1 :(得分:0)