我在Excel中编写了一个相当简单的UDF,现在我正在添加错误检查。基本上它只返回字符串中两个分隔符之间的子字符串。如果找不到任何分隔符,我希望它返回#N / A错误(就像MATCH那样)。我这样做是
If (start_delim_pos = 0 Or end_delim_pos = 0) Then
MYFUNCTION= CVErr(xlErrNA)
End If
但是,我收到了#VALUE错误。无论我在CVErr
函数中放入什么,我都会收到#VALUE错误。
有关问题可能是什么以及如何获得所需错误的任何想法?
答案 0 :(得分:0)
我的猜测是你将UDF的返回类型定义为String
。
VBA不会将error variant
转换为字符串。尝试将返回的字符串分配给错误时,即
MYFUNCTION= CVErr(xlErrNA)
UDF与type mismatch
打破,Excel显示#VALUE!
。
如果要允许函数返回字符串或错误代码,请将其返回类型As Variant
(或简单地省略它)。
Function MYFUNCTION(...) As Variant
' ^^^^^^^^^^ Not As String