无法为Excel UDF返回正确的错误types

我在Excel中写了一个相当简单的UDF,现在我添加了错误检查。 本质上它只是返回string中两个分隔符之间的子串。 如果没有find任何分隔符,我希望它返回#N / A错误(像MATCH那样)。 我是这样做的

If (start_delim_pos = 0 Or end_delim_pos = 0) Then MYFUNCTION= CVErr(xlErrNA) End If 

但是,我收到#VALUE错误。 不pipe我放在CVErr函数中,我得到一个#VALUE错误。

任何想法可能是什么问题,以及如何获得所需的错误返回?

我的猜测是你定义了你的UDF的返回types是一个String

VBA不会将error variant转换为string。 当试图将返回的string分配给一个错误,即

 MYFUNCTION= CVErr(xlErrNA) 

UDF打破type mismatch ,Excel显示#VALUE!

如果你想允许你的函数返回一个string或一个错误代码,使其返回typesAs Variant (或简单地省略它)。

 Function MYFUNCTION(...) As Variant ' ^^^^^^^^^^ Not As String