excel - 无法为 Excel UDF 返回正确的错误类型

标签 excel error-handling user-defined-functions vba

我在 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/

相关文章:

excel - 使用单元格值和通配符的困难vlookup公式

r - 将csv表导入R并出现多个错误

error-handling - 纯Fortran过程中的I/O

Java:当用户输入超出范围的数字时是否存在异常

c# - 如何使用不同的列名称映射 EF6 Code First 中的表值函数?

java - 如何将用户定义的对象添加到 LinkedList?

python - 如何使用 openpyxl 在 XLSX 文件中逐个单元格地插入和格式化值

vba - 在 VBA 宏中使用字典的简单 VLOOKUP

java - Hive UDF、Java 基元和 null

excel - 在 for 循环中移动时避免 Cell 规范