2017-06-12 36 views
0

(1000 * 60)のオーバーフローエラーが発生しますが、(60000)に変更するとうまく動作します。なぜ1000 * 60が60000と同じではないのですか?これは私が働いているものです。あなたは特にそう言っていない限りLongデータ型のオーバーフローエラー

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 

答えて

2

番号100060は両方Integerです。 2つのIntegerの値を掛け合わせると、Integerの結果になりますが、60000は、Integerとして格納できる最大値を超えているため、オーバーフローエラーが発生します。

少なくとも1つをLongとすることで、乗算を強制的に動作させることができます。 LongIntegerを掛けたものがLongを返すため、1000& * 60またはCLng(1000) * 60が機能します。

+0

すばらしい答えと解決策をありがとう。 – Quint

関連する問題