神秘溢出(错误6)

时间:2015-11-18 22:40:37

标签: excel vba overflow

我有一个子例程,由于我无法理解的原因立即出错。

例程中的第一行尝试将值加载到变量中,并且错误输出。

UPCTGT = CLng(Sheets("Settings").Range("C3").Value)

单元格C3中的值是3800040260 ..为什么会导致溢出错误?

2 个答案:

答案 0 :(得分:4)

Long是32位带符号数据类型。您可以使用32位(签名)生成的最大数字是 2,147,486,647

<强> TL; DR

32位是指32位的内存

2,147,486,647 是可用的最大数字是因为:

'// Dec to Binary
2,147,486,647 = 11111111111111111111111111111111
2,147,486,648 = 100000000000000000000000000000000
                                                ^
                                     '// That's a 33rd bit

第33位 溢出 该数据类型可用的内存量 - 因此出现溢出错误。

然而,Double是64位有符号整数,并且有足够的空间:)

答案 1 :(得分:0)

需要施放为双倍。虽然我不确定为什么龙还不够。我认为数据类型具有更大的潜力