Excel公用函数返回某些数字的“值#”

我正在为我和我的父亲,兄​​弟等制作一个简单的Excel工作表,以跟踪汽车维修情况。 我有一些编程背景,但还不足以解决这个问题。 问题是,当某些数字string被拉入到函数中,然后放入等式中时,会给出一个#VALUE! 错误。 看下面的例子:

单元格B9:replace@英里:185555

细胞D9:41446

单元格E9:= IF($ G $ 2- $ D9> = getMiles(B9),“SERVICE!”,“OK”)

细胞G2:60000

如果我在E9中input18555,我会得到“OK”而不是错误。

如果我input40000,我得到错误。

另外,如果我将等式更改为= getMiles(B9),就会发生这种情况。 同样的事情。 这显然不是数字的数字。 但是,超过一定数量的东西似乎会引发错误。 我不知道这是一个hex的东西或错误,或我的代码。 请帮忙。 请参阅下面的英里公式,并随时从我的链接下载Excel表。 感谢您的努力。

Public Function getMiles(cellie As String) As Double Dim pos As Integer Dim milesStr As String Dim milesTrimmedStr As String Dim milesInt As Integer Dim number As Integer pos = InStr(cellie, "miles:") number = pos + 6 milesStr = Mid(cellie, number, 7) milesTrimStr = Trim(milesStr) milesInt = CDbl(Val(milesTrimStr)) getMiles = milesInt End Function 

链接到我的Excel文件: https : //filedropper.com/filemanager/public.php?service=files&t=1c6edf91310c639743bfcd09b0fbb80c

将variablesmilesIntIntegertypes更改为Doubletypes。 你正在溢出整数variables。

在VBA中, Integervariables是16位,值分为正值和负值,所以可以存储的最大正数是2 ^ 15-1 = 32767,这就是为什么你的函数不能处理4万个。 由于你的函数返回一个double,所以把这个variables声明为Double是有意义的。 其他Integervariables可以声明为Long (即使溢出不是危险)。 使用现代化的机器,在VBA中使用16位整数variables确实没有多大意义。