gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 16:58:08 25 4
gpt4 key购买 nike

我怀疑答案是“不可能” - 但向这个优秀的社区询问并没有什么坏处!

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

目前,我将此 UDF 放在包含工作簿的“模块”中。但我想做的是将 UDF 代码放置在“工作表对象”中,以便它可用于该特定工作表。

我当然试过了,但是不可见,所以我自然得到一个#NAME?错误。我尝试在 Function 前面加上 Public (无论如何都会击败该对象),但无济于事。

有人知道一个特定的技巧吗?

预先感谢,尼克。

最佳答案

根据函数的要求,您可以有一个仅返回预期工作表上的正确答案的子句。

假设您的函数采用一个范围作为输入,即

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 返回包含该函数的单元格。

关于vba - 将 Excel UDF 放入工作表对象中(而不是放在模块中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25931008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com