首页 > 解决方案 > #NUM!用户定义函数错误

问题描述

我创建了一个名为的新函数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

标签: excelvba

解决方案


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

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

有关 和 之间差异的更详细说明,IntegerLong可以阅读 RubberDuck 在这篇文章中的回答:为什么使用整数而不是长整数?


推荐阅读