【问题标题】:#NUM! error in user defined function#NUM!用户定义函数错误
【发布时间】:2018-11-01 03:25:42
【问题描述】:

我创建了一个名为length 的新函数,它测试字符数并在字符数大于 5 时显示“错误结果”。 但是,函数的结果是#NUM!如果测试是 5 个字符或更少,则会显示结果。

怎么了?

Function length (number as integer)
    If ( Len (CStr (number)) > 5 ) then
        length = "error"
    End if
    If ( Len (Cstr (number)) <6) then
        length = "the count is true"
    End if
End Function

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    由于数据类型的性质,这将发生。更准确地说,您的函数将适用于高达(包括)32,767 的值。在此之上,它将返回 #NUM,因为您的 number 不再适合您强制它成为的整数。

    如果您将 number 定义为 Long 数据类型,它将处理高达(包括)2,147,483,647 的值。

    有关IntegerLong 之间差异的更详细说明,您可以阅读RubberDuck 在这篇文章中的回答:Why Use Integer Instead of Long?

    【讨论】:

    • 您也可以替换第一端 if 和 Else。即如果大于 5 则错误,否则为真。此外,您可以使用length = CVErr(xlErrNum) 来返回错误值(#NUM!),而不是length = "error"。返回一个真正的错误允许你使用=IFERROR(...)cpearson.com/excel/ReturningErrors.aspx
    • 好建议@DarrenBartrup-Cook
    • 我将数字变量设为字符串。有效。错误在于数据类型。我把类型写的很长,而且效果也很好@luuklag
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-30
    • 1970-01-01
    • 1970-01-01
    • 2022-07-19
    • 2010-11-17
    • 1970-01-01
    • 2021-01-13
    相关资源
    最近更新 更多