【问题标题】:VBA overflow behaviourVBA 溢出行为
【发布时间】:2018-04-26 08:43:32
【问题描述】:

我有一些我不理解的 vba 行为。 我在 excel 2016 的宏中运行 vba。

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 excel integer-overflow


【解决方案1】:

Integer 在 VBA 中的最大值为 32,767。

你用50 * a 溢出了。将其分配给 Long 并不相关,因为从概念上讲,乘法发生在分配之前,到那时,损害已经造成。

使用Long 代替a 或写

b = 50& * a

强制类型提升。两者都可以达到 2,147,483,647

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多