我怀疑答案是“不可能的”——但询问这个优秀的社区并没有什么坏处!
我有一个特定工作表独有的 Excel 2013 UDF(用户定义函数)。
目前,我在包含工作簿的“模块”中有这个 UDF。但我想做的是将 UDF 代码放在“工作表对象”中,以便它仅适用于该特定工作表。
我当然试过了,但它不可见,所以我自然得到一个#NAME?错误。我已经尝试在函数前面加上 Public(这无论如何都会破坏对象),但无济于事。
有谁知道一个特定的技巧?
在此先感谢,尼克。
我怀疑答案是“不可能的”——但询问这个优秀的社区并没有什么坏处!
我有一个特定工作表独有的 Excel 2013 UDF(用户定义函数)。
目前,我在包含工作簿的“模块”中有这个 UDF。但我想做的是将 UDF 代码放在“工作表对象”中,以便它仅适用于该特定工作表。
我当然试过了,但它不可见,所以我自然得到一个#NAME?错误。我已经尝试在函数前面加上 Public(这无论如何都会破坏对象),但无济于事。
有谁知道一个特定的技巧?
在此先感谢,尼克。
这是不可能的。UDF必须位于普通模块中。:)
根据函数的要求,您可以有一个仅在预期工作表上返回正确答案的子句。
假设您的函数将范围作为输入,即
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
WhereApplication.Caller
返回包含函数的单元格。