Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


8515 / 13644 ツリー ←次へ | 前へ→

【32824】変数についての疑問(初心者) サザエ 05/12/22(木) 20:45 質問[未読]
【32826】Re:変数についての疑問(初心者) やっちん 05/12/22(木) 21:37 発言[未読]
【32827】Re:変数についての疑問(初心者) やっちん 05/12/22(木) 21:41 発言[未読]
【32829】Re:変数についての疑問(初心者) サザエ 05/12/22(木) 22:26 お礼[未読]

【32824】変数についての疑問(初心者)
質問  サザエ E-MAIL  - 05/12/22(木) 20:45 -

引用なし
パスワード
   Dim i as byte
i = 5

if i - 8 <= 5 then
   .......................
   .......................
end if

上だと、「エラー6、オーバーフロー」になります。
・ i - 7 だと、エラーにはなりません。
・ iのデータ型をinteger にしてもエラーにはなりません。
ifのあとの i - 8 の値は i に格納されるのでしょうか?
そうだとしても i - 7 でOKなのはなぜでしょうか?
i - 7 = -2 でbyte型の範囲を超えてしまっているのでは?

【32826】Re:変数についての疑問(初心者)
発言  やっちん  - 05/12/22(木) 21:37 -

引用なし
パスワード
   ▼サザエ さん:
>Dim i as byte
> i = 5
>
> if i - 8 <= 5 then
>上だと、「エラー6、オーバーフロー」になります。

なりませんよ。
i=i-8をするとオーバーフローにはなりますが。
詳しいことは忘れましたが
> if i - 8 <= 5 then
式に複数の変数の型が混じると範囲の大きい型の方で計算されます。
上の条件式の場合はLongかIntegerで計算されているのだと思います。

【32827】Re:変数についての疑問(初心者)
発言  やっちん  - 05/12/22(木) 21:41 -

引用なし
パスワード
   7をバイト型に変換してやると左辺はバイト型どうしの計算になり
0〜255の範囲を外れるのでオーバーフローになります
  i=5
  If i - CByte(7) <= 5 Then

【32829】Re:変数についての疑問(初心者)
お礼  サザエ E-MAIL  - 05/12/22(木) 22:26 -

引用なし
パスワード
   やっちん さんありがとうございます。
確かにそのとうりでした。
質問の内容をうまく伝えようと変数を数字に勝手に変えて質問したのが
間違いでした。今度からちゃんとプログラムのまま質問に乗せるようにします。
まだvba初めて数日で、本は一通り読んで覚えたのですが、やってみると
以外といろんな疑問が出てきます。つまらない質問ばかりするかもしれませんが、
これからもよろしくお願いします。

8515 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free