Vba Excel公共函数返回“;“价值”;对于某些数字
我正在为我和我的爸爸、兄弟等制作一个简单的Excel表格,以记录汽车维修情况。我有一些编程背景,但不足以解决这个问题。问题是,当某些数字字符串被拉入函数,然后放入方程中时,它会给出一个#值!错误。请参见下面的示例: 单元格B9:更换@英里数:185555 D9单元:41446 单元格E9:=IF($G$2-$D9>=getMiles(B9),“服务!”,“确定”) G2单元:60000 如果我在E9中输入18555,我会得到“OK”而不是错误 如果我输入40000,就会得到错误 同样,如果我将等式改为=getMiles(B9),就会发生这种情况。完全一样。显然,这不是数字的多少。但是,任何超过一定数量的东西似乎都会触发错误。我不知道这是一个十六进制的东西或错误,或我的代码。请帮忙。请参见下面的里程公式,并从我的链接下载excel表格。提前感谢你的努力Vba Excel公共函数返回“;“价值”;对于某些数字,vba,excel,Vba,Excel,我正在为我和我的爸爸、兄弟等制作一个简单的Excel表格,以记录汽车维修情况。我有一些编程背景,但不足以解决这个问题。问题是,当某些数字字符串被拉入函数,然后放入方程中时,它会给出一个#值!错误。请参见下面的示例: 单元格B9:更换@英里数:185555 D9单元:41446 单元格E9:=IF($G$2-$D9>=getMiles(B9),“服务!”,“确定”) G2单元:60000 如果我在E9中输入18555,我会得到“OK”而不是错误 如果我输入40000,就会得到错误 同样,如果我将等
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文件:将变量
milesInt
从类型Integer
更改为类型Double
。您正在溢出整数变量
在VBA中,
Integer
变量是16位的,其值分为正数和负数,因此可以存储的最大正数是2^15-1=32767。这就是函数无法处理40000的原因。由于函数返回一个double,因此将该变量声明为double
是有意义的。其他整数
变量可以声明为长
(即使溢出不是危险)。对于现代机器来说,在VBA中使用16位整数变量真的没有多大意义。非常适合。如您所见,我脑子里有一个小小的想法,它可能需要是双精度的,所以我更改了返回类型,但忘记了更改内部变量。我的想法很尴尬,很可怜。非常感谢您简洁、准确、及时的回复!愿编程之神怜悯我的灵魂。。。。