我在 Excel 中编写了一个相当简单的 UDF,现在我正在添加错误检查。本质上它只是返回字符串中两个分隔符之间的子字符串。如果没有找到任何一个分隔符,我希望它返回一个 #N/A 错误(就像 MATCH 一样)。我这样做是通过
If (start_delim_pos = 0 Or end_delim_pos = 0) Then
MYFUNCTION= CVErr(xlErrNA)
End If
但是,我收到 #VALUE 错误。不管我在
CVErr
中放了什么函数,我得到一个#VALUE错误。关于问题可能是什么以及如何返回所需错误的任何想法?
最佳答案
我的猜测是您将 UDF 的返回类型定义为 String
.
VBA 不转换 error variant
串起来。尝试将返回的字符串分配给错误时,即
MYFUNCTION= CVErr(xlErrNA)
UDF 中断
type mismatch
Excel 显示 #VALUE!
.如果你想让你的函数返回一个字符串或一个错误代码,让它的返回类型为
As Variant
(或干脆省略它)。Function MYFUNCTION(...) As Variant
' ^^^^^^^^^^ Not As String
关于excel - 无法为 Excel UDF 返回正确的错误类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45071970/