Excel 神秘溢出(错误6)
我有一个子程序,由于我无法理解的原因,它会立即出错 例程的第一行尝试将值加载到变量中,但它出错了Excel 神秘溢出(错误6),excel,vba,overflow,Excel,Vba,Overflow,我有一个子程序,由于我无法理解的原因,它会立即出错 例程的第一行尝试将值加载到变量中,但它出错了 UPCTGT = CLng(Sheets("Settings").Range("C3").Value) 单元格C3中的值是3800040260。为什么会导致溢出错误?需要转换为double。虽然我不知道为什么时间不够长。我认为数据类型有更大的潜力需要转换为double。虽然我不知道为什么时间不够长。我认为数据类型更有潜力ALong是一种32位有符号数据类型。使用32位(有符号)可以生成的最大数字是
UPCTGT = CLng(Sheets("Settings").Range("C3").Value)
单元格C3中的值是3800040260。为什么会导致溢出错误?需要转换为double。虽然我不知道为什么时间不够长。我认为数据类型有更大的潜力需要转换为double。虽然我不知道为什么时间不够长。我认为数据类型更有潜力A
Long
是一种32位有符号数据类型。使用32位(有符号)可以生成的最大数字是2147486647
TL;DR 32位表示32位内存
2147486647
是可用的最大数字的原因是:
'// Dec to Binary
2,147,486,647 = 11111111111111111111111111111111
2,147,486,648 = 100000000000000000000000000000000
^
'// That's a 33rd bit
第33位溢出该数据类型可用的内存量,因此溢出错误
但是,
Double
是一个64位有符号整数,有足够的空间:)ALong
是一种32位有符号数据类型。使用32位(有符号)可以生成的最大数字是2147486647
TL;DR 32位表示32位内存
2147486647
是可用的最大数字的原因是:
'// Dec to Binary
2,147,486,647 = 11111111111111111111111111111111
2,147,486,648 = 100000000000000000000000000000000
^
'// That's a 33rd bit
第33位溢出该数据类型可用的内存量,因此溢出错误
但是,
Double
是一个64位有符号整数,有足够的空间:)有符号长整数或长整数的范围为–2147483648到2147483647()。您正在尝试填充3800040260。有符号长整数或长整数的范围为–2147483648到2147483647()。你想把东西塞进3800040260。