簡単な計算なのにオーバーフローしてしまいます。

解決


AI  2007-12-10 14:10:06  No: 138355

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桁の整数です。

分かる方がいれば回答よろしくお願いします。


YuO  2007-12-10 17:22:34  No: 138356

VB6/VBAの整数型は16ビットだからです。
3600 * 1000 = 3600000 > 32767なので,オーバーフローしています。

3600&のように,最低でも片方が長整数型であることを明示すれば,オーバーフローしないはずです。


AI  2007-12-12 23:10:23  No: 138357

YuO様

アドバイス通り長整数型を宣言するとオーバーフローしなくなりました。

アドバイスありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加