[過去ログ] Excel VBA 質問スレ Part80 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
426
(3): 2024/01/27(土)06:28 ID:0SBBADg4(1)調 AAS
Dim i as long と宣言してたのに
i = なんちゃらかんちやら とかいうコードで
iの価が32000程度を、超えるようなとき、over flowという
エラーになることがあります。

Dim i as long なら、32000を少し超えてもover flow
しないのに不思議です。

なんちゃらのとこには定数3とかの数式なのですが
ヤケクソで定数3を、 3# にしたらoverflowせず正常に動作しました。

なんでoverflowしたのか、憶測でも構わないので
誰か教えて下さい

ま、おそらくintegerと見做されたのでしょうが
どうして、Dim i as long 宣言したのに、なんか腑に落ちません
428
(1): 2024/01/27(土)07:38 ID:5pa6Aq5E(1)調 AAS
>>426
数式中に使っているそれぞれの定数がIntegerの範囲内で、その合計がIntegerの範囲を超えるとオーバーフローするらしい。
定数もあらかじめ変数に入れたりして対策するみたい。
https://www.bold.ne.jp/engineer-club/vba-overflow
441
(1): 2024/01/28(日)14:12 ID:GlU8zkf4(1)調 AAS
>>426
iがintegerだとされたんじゃなくて、右辺がintegerだと判定されて、右辺の計算でオーバーフローしてる
>>428
定数の値じゃなくて、定数の型できまるはず

結論はConstにもちゃんと型指定しろ、ってことだ
ちなみに#は倍精度浮動小数点数らしいぞ

>>429
ADOのバージョンは?
一部バージョンでライブラリがばぐってたはず
443
(1): 426 2024/01/28(日)16:52 ID:v9jfp3rb(1/3)調 AAS
イロイロ、ありがとう
さて、ま、念の為、何というか、

Dim i as long
Dim x as long
Dim y as long
Dim BDATA(約25000000) as BYTE

For x = 0 to 3840 - 1
For y = 0 to 2160 - 1
i = 3840 * 3 * y + 3 * x
BDATA(i) = 255
BDATA(i+1) = 0
BDATA(i+2) = 0
next
next

は、モチロン、駄目なプログラミング
さて、いや。呟きです。
とにかく、ありがとう
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 1.346s*