我怀疑答案是"不可能" - 但要求这个优秀的社区没有害处!
我有一个Excel 2013 UDF(用户定义函数),它对某个工作表是唯一的。
目前,我将这个UDF放在"模块"在包含的工作簿中。但我想做的是将UDF代码放在"工作表对象"所以仅可用于该特定工作表。
我当然试过了,但它不可见,所以我自然会得到一个#NAME?错误。我已经尝试过使用公共功能(无论如何都会打败对象),但无济于事。
有没有人知道特定的伎俩?
先谢谢,Nic。
答案 0 :(得分:2)
这是不可能的。 UDF 具有在正常模块中。 :)
答案 1 :(得分:2)
根据您的功能要求,您可以使用只在预期工作表上返回正确答案的子句。
让我们说你的函数需要一个范围作为输入,即
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
返回包含该函数的单元格。