我有一个子例程,由于我无法理解的原因立即出错。
例程中的第一行尝试将值加载到变量中,并且错误输出。
UPCTGT = CLng(Sheets("Settings").Range("C3").Value)
单元格C3中的值是3800040260 ..为什么会导致溢出错误?
答案 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)
需要施放为双倍。虽然我不确定为什么龙还不够。我认为数据类型具有更大的潜力