Vba 运行时错误6溢出
尽管我所有的数据类型看起来都很好,但我还是遇到了这个错误 运行时错误6溢出 以下是函数:Vba 运行时错误6溢出,vba,Vba,尽管我所有的数据类型看起来都很好,但我还是遇到了这个错误 运行时错误6溢出 以下是函数: Function equation(x As Long) As Long Dim a As Long, b As Double a = Int(((x - 2) Mod 8) / 6) + 2 * Int((x - 2) / 8) b = (x + a - 1) / 2 equation = Abs(4 * b + 5 + 2 * Int(b)) End Functi
Function equation(x As Long) As Long
Dim a As Long, b As Double
a = Int(((x - 2) Mod 8) / 6) + 2 * Int((x - 2) / 8)
b = (x + a - 1) / 2
equation = Abs(4 * b + 5 + 2 * Int(b))
End Function
当
x=572662307
表示溢出时遇到错误。x=572662307
。是32位有符号整数(约20亿)最大值的四分之一,因此您的算术运算可能会达到该值
在VBA中,Long是32位有符号整数,而不是C#中的64位有符号整数。我建议将a
和x
更改为Double
您还可以展开函数,以便检查调试器中的所有中间步骤:
Function equation(x As Double) As Double
Dim a As Double, b As Double, c As Double, d As Double, e As Double, f As Double, g As Double
a = (x - 2) Mod 8
b = a / 6
b = Int( b )
c = (x - 2) / 8
d = 2 * Int( c )
e = b + d
f = (x + a - 1)
f = f / 2
g = 4 * b + 5 + 2 * Int( f )
equation = Abs( g )
End Function
x=572662307
。是32位有符号整数(约20亿)最大值的四分之一,因此您的算术运算可能会达到该值
在VBA中,Long是32位有符号整数,而不是C#中的64位有符号整数。我建议将a
和x
更改为Double
您还可以展开函数,以便检查调试器中的所有中间步骤:
Function equation(x As Double) As Double
Dim a As Double, b As Double, c As Double, d As Double, e As Double, f As Double, g As Double
a = (x - 2) Mod 8
b = a / 6
b = Int( b )
c = (x - 2) / 8
d = 2 * Int( c )
e = b + d
f = (x + a - 1)
f = f / 2
g = 4 * b + 5 + 2 * Int( f )
equation = Abs( g )
End Function
是否确实要使用
Int
功能?它执行整数截断。572662307
是32位有符号整数(20亿)最大值的四分之一。在VBA中,Long是32位整数,而不是C#中的64位整数。我建议将x
更改为Double
@Dai此int的替代品是什么?是的,这是必要的,因为我只需要modmaybe数据类型后面的整数部分do@DisplayNameLongLong
在32位Office中不可用。是否确实要使用Int
功能?它执行整数截断。572662307
是32位有符号整数(20亿)最大值的四分之一。在VBA中,Long是32位整数,而不是C#中的64位整数。我建议将x
更改为Double
@Dai此int的替代品是什么?是的,这是必要的,因为我只需要modmaybe数据类型后面的整数部分do@DisplayNameLongLong
在32位Office中不可用。但x也超过20亿也用于a,x也超过20亿也用于a