第3講 数字を入れる箱を活用しよう
第3話 エラー(オーバーフロー)したときの対応

Private Sub CommandButton1_Click()
  Dim a As Byte, b As Byte
  a = 12
  b = 15
  Cells(6, 1) = "a="
  Cells(6, 2) = a
  Cells(7, 1) = "b="
  Cells(7, 2) = b
  Cells(8, 1) = "a+b="
  Cells(8, 2) = a + b
  Cells(9, 1) = "a-b="
  Cells(9, 2) = a - b
End Sub
と変更すると、

オーバーフローというエラーを起こします。
12−15=−3ですから、
最も小さい箱であるバイト型の範囲0から256の中にありません。
オーバーは範囲を上回るとか、外れるという意味です。
フローは流れるという意味です。
要するにオーバーフローで範囲からはずれる計算を行おうとしたという意味です。
オーバーフローしたときの対処は、終了ボタンを押せばよいのです。
終了ボタンを押すとが消えます。
そして、Alt+F11によって、VBAに戻り、エラーした場所を修正します。
Dim a As Byte, b As ByteをDim a As Integer, b As Integer
と訂正すれば問題は解決します。
なぜなら、Byte型の範囲は0から256であるのに対して、
Integer型の範囲は-32,768〜32,767であるからです。
Byte型同士の計算a - bの結果もByte型になるということにVBAの文法でなっているからです。
あるいは、
Cells(9, 2) = a - bをCells(9, 2) = CInt(a) - CInt(b)
と修正しても問題を解決できて正しい計算結果を得ることができます。

最も小さい箱(Byte型)の活用ということに絞れば、解決法は
Cells(9, 2) = CInt(a) - CInt(b)
ということになります。
CInt(a)の意味は、Byte型のaを強制的にInteger型に変更するということです。
これをキャストといいます。
専門用語は使わないことになっていますので、
本講義では型(タイプ)の変身と呼びます。


第2話へ 第4話へ

トップ

vc++講義へ

初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
vb講義へ
VB講義基礎へ
初心者のためのJava 入門 基礎から応用まで
数学研究室に戻る