神秘溢出(错误 6)

Mystery Overflow (Error 6)

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

例程中的第一行尝试将值加载到变量中,但出错了。

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

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

需要转换为双重角色。虽然我不确定为什么 Long 还不够。我认为数据类型有更大的潜力

A 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 位有符号整数,并且有足够的空间供您使用 :)