VBA 溢出行为
VBA overflow behaviour
我有些 vba 行为我不理解。
我 运行 vba 在 excel 2016 年的宏中。
Sub alpha()
Dim a As Integer, b As Long
a = 750
b = 50 * a
Stop
End Sub
运行 此子导致溢出错误。为什么?
变量 a
是一个整数,因此不能保存数字 750*50
,因为它太大了。但是变量 b
被维度化为 long - 所以它应该能够容纳那个数字。
奇怪的是 - 如果我将变量类型 a
更改为 Long
然后代码运行。
VBA 中 Integer
的最大值为 32,767。
你用 50 * a
溢出了。将其分配给 Long
并不重要,因为从概念上讲,乘法发生在分配之前,到那时,损坏已经完成。
使用 Long
代替 a
或写
b = 50& * a
强制类型提升。最多 2,147,483,647
我有些 vba 行为我不理解。 我 运行 vba 在 excel 2016 年的宏中。
Sub alpha()
Dim a As Integer, b As Long
a = 750
b = 50 * a
Stop
End Sub
运行 此子导致溢出错误。为什么?
变量 a
是一个整数,因此不能保存数字 750*50
,因为它太大了。但是变量 b
被维度化为 long - 所以它应该能够容纳那个数字。
奇怪的是 - 如果我将变量类型 a
更改为 Long
然后代码运行。
VBA 中 Integer
的最大值为 32,767。
你用 50 * a
溢出了。将其分配给 Long
并不重要,因为从概念上讲,乘法发生在分配之前,到那时,损坏已经完成。
使用 Long
代替 a
或写
b = 50& * a
强制类型提升。最多 2,147,483,647