将Excel UDF放入工作表对象(而不是在模块中)

我怀疑答案是“不可能的” – 但问这个好社区没有什么坏处!

我有一个Excel 2013 UDF(用户定义函数)是特定于某个工作表。

目前,我在包含工作簿的“模块”中有这个UDF。 但是我想要做的是将UDF代码放在“工作表对象”中,这样​​它才可用于特定的工作表。

当然,我已经尝试过,但是不可见,所以我自然会得到一个#NAME? 错误。 我已经尝试过使用公共函数(反正会击败对象),但无济于事。

有谁知道一个特定的伎俩?

在此先感谢,尼克。

根据您的function的要求,您可以有一个条款,只返回预期的工作表上的正确答案。

假设你的函数将范围作为input,即

Function CheckSheet(r As Range) If r.Parent.Name = "Intended Sheet Name" Then CheckSheet = "The correct value!" Else CheckSheet = CVErr(xlErrNA) EndIf End Function 

编辑:

如果作为参数的范围在预期的工作表上,以前的版本仍然可以在另一个工作表上使用。 它可以被修改为:

 Function CheckSheet() If Application.Caller.Parent.Name = "Intended Sheet Name" Then CheckSheet = "The correct value!" Else CheckSheet = CVErr(xlErrNA) EndIf End Function 

Application.Caller返回包含该函数的单元格。

这是不可能的。 UDF 必须位于正常模块中。 🙂