[過去ログ] 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*