for j=1 to 24
a = Workbooks(d_book).Sheets(sh).Cells(j+ 1, 2).Value/(3600*1000)
next j
このように書くと2行目でオーバーフローしましたとエラーが出ます。
a = Workbooks(d_book).Sheets(sh).Cells(j + 1, 2).Value
a = a / 3600
a = a / 1000
このように書くとちゃんと計算してくれるのですが何がいけないのでしょうか?
ちなみにセルの内容は6桁の整数です。
分かる方がいれば回答よろしくお願いします。
VB6/VBAの整数型は16ビットだからです。
3600 * 1000 = 3600000 > 32767なので,オーバーフローしています。
3600&のように,最低でも片方が長整数型であることを明示すれば,オーバーフローしないはずです。
YuO様
アドバイス通り長整数型を宣言するとオーバーフローしなくなりました。
アドバイスありがとうございました。