#NUM!用户定义函数中的错误

Sil*_*awk 4 excel vba excel-vba

我做了一个新的函数调用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
Run Code Online (Sandbox Code Playgroud)

Luu*_*lag 6

由于数据类型的性质,这将发生.更准确地说,您的功能将适用于最高为32,767的值.在此之上,它将返回#NUM,因为你number不能再适应你强制它的整数.

如果您定义numberas as Long数据类型,它将处理最多包括2,147,483,647的值.

对于之间的差异更详细的解释Integer,并Long可以对这个职位读取RubberDuck答案:为什么要使用整型而不是长?

  • 您也可以替换第一个结束if和测试<6并替换为`Else`.即如果它> 5然后错误,否则它是真的.另外,不是`length ="error"`你可以使用`length = CVErr(xlErrNum)`来返回错误值(`#NUM!`).返回一个真正的错误允许你使用`= IFERROR(...)`http://www.cpearson.com/excel/ReturningErrors.aspx (3认同)