This question already has answers here:
Overflow when multiplying Integers and assigning to Long
(2个答案)
6年前关闭。
我只是想存储一个大数字,而这个数字甚至没有那么大。为什么这会引发错误运行时错误6?我确定我做的事情很愚蠢。
原因是因为您提供的文字被解释为
通过使用
(2个答案)
6年前关闭。
Sub Testing()
Dim Ttt As Long
Dim a As Variant
Dim s As String
s = "11:30:05.500"
Ttt = (11 * 50 * 10 * 10)
'a = Split(StrConv(s, 64), Chr(0))
'Ttt = TimeGet(a)
End Sub
我只是想存储一个大数字,而这个数字甚至没有那么大。为什么这会引发错误运行时错误6?我确定我做的事情很愚蠢。
最佳答案
尝试这个:
Ttt = (11& * 50& * 10& * 10&)
原因是因为您提供的文字被解释为
Integer
值,并且乘法运算是按操作顺序进行的,因此对于Integer
而言,最终结果太大了,然后才被分配并隐式转换为Long
数据类型( Ttt
变量)。通过使用
&
类型字符,您可以告诉编译器您的文字实际上是Long
值。08-05 14:57