神秘溢出(错误6)

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

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

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

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

Long是一个32位有符号数据types。 您可以用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位溢出可用于该数据types的内存量 – 因此溢出错误。


Double然而,是一个64位有符号整数,有足够的空间给你:)

需要投两倍。 虽然我不确定龙为什么不够用。 我认为数据types有更多的潜力