Long数据类型的溢出错误

时间:2017-06-12 06:01:51

标签: vba access-vba

我收到了(1000 * 60)的溢出错误,但当我将其更改为(60000)时,它运行正常。为什么1000 * 60与60000不一样?这就是我正在使用的。

Private Declare Function GetTickCount Lib "kernel32" () As Long
Dim NowTick As Long
Dim SaveTick As Long

Public Sub ToolACCLooper()
SaveTick = GetTickCount + (1000 * 60)

Do
    NowTick = GetTickCount
    DoEvents
    If SaveTick <= NowTick Then
         ActiveWorkbook.Save
         SaveTick = GetTickCount + (1000 * 60)
    End If
Loop
End Sub

1 个答案:

答案 0 :(得分:2)

数字100060均为Integer,除非您另有说明。将两个Integer值相乘会得到Integer结果,但60000超过可以存储为Integer的最大值,因此会出现溢出错误。

您可以通过将其中至少一个设为Long来强制乘法工作,例如1000& * 60CLng(1000) * 60可行,因为Long乘以Integer会返回Long