我收到了(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
答案 0 :(得分:2)
数字1000
和60
均为Integer
,除非您另有说明。将两个Integer
值相乘会得到Integer
结果,但60000
超过可以存储为Integer
的最大值,因此会出现溢出错误。
您可以通过将其中至少一个设为Long
来强制乘法工作,例如1000& * 60
或CLng(1000) * 60
可行,因为Long
乘以Integer
会返回Long
。