This question already has answers here:
Overflow when multiplying Integers and assigning to Long

(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