第4講 数字型変数を理解しよう

第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話へ



トップ


初心者のためのc++ vc++ c言語 入門 基礎から応用までへ
初心者のための excel 2007 2010 2013 vba 入門 基礎から応用まで
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
vb講義トップへ
VB講義基礎へ
専門用語なしのC++入門へ
専門用語なしのJava入門へ
専門用語なしのVBA入門

数独のページ
魔方陣のページ
数学研究室に戻る
本サイトトップへ