前回のVBAプログラミング覚え書きでは「変数のデータ型」について書き留めました。
変数とデータ型のイメージや、具体的にどういったデータ型があるかを表にまとめましたが、
最後に型の使い方について1つ疑問を残して終わりました。
今回はこの疑問を解消するためもう少し変数のデータ型の深いところに踏み込んで書き留めたいと思います。
スポンサーリンク
IntegerとLongの使い分け
前回の疑問をもう一度振り返りたいと思います。
よく使用するデータ型の中に『Integer』があります。
これは整数型と呼ばれ、-32,768~32,767の数値を格納することができます。
一方、『Long』にも数値が入ります。
こちらは長整数型と呼ばれ、-2,147,483,648 ~ 2,147,483,647の数値が格納できます。
見ればわかるように『Long』のほうが幅広い範囲の数値が格納できます。
更にいえば、どんな値でも格納できてしまう『Variant』というデータ型も存在します。
それならばわざわざ範囲の狭い『Integer』を使わなくても『Long』や『Variant』を使えば問題ないのではないでしょうか。
「消費メモリ」という要素
『Integer』と『Long』には格納できる数値の他にもうひとつの違いがあります。
それは『消費メモリ』です。
消費メモリはプログラムを実行するときに消費するメモリの容量です。
わかりやすくいえば、運動するときに使う体力のようなものです。
『Integer』型の消費メモリが2バイトに対し、『Long』型のメモリは4バイトと2倍になります。
『Variant』型に至っては16バイトで、『Integer』型の8倍になります。
プログラムを動かしたときのメモリ消費量が小さければ小さいほど余分な労力を使わなくて済むので高速で処理できるわけです。
米俵を担いで走るよりも空のリュックを背負って走る方が体力の消費も少ないし速く走れますよね(笑)
以上の理由から、同じように数値を格納したいときでも-32,768~32,767の範囲内に収まるときは『Integer』を使います。
スポンサーリンク
各データ型の消費メモリ量
それぞれのデータ型の消費メモリ量を前回の表に追加しました。
2バイト~16バイトと幅があるのがわかります。
値の種類 | データ型 | 格納できる値の範囲 | 消費メモリ量 |
文字列 | String | 約20億文字 | 2バイト |
数値 | Integer | -32,768 ~ 32,767 | 2バイト |
数値 | Long | -2,147,483,648 ~ 2,147,483,647 | 4バイト |
数値 | Single | 負:約-3.4×10(38乗)~-1.4×10(-45乗) 正:約1.4×10(-45乗)~1.8×10(38乗) | 4バイト |
数値 | Double | 負:約-1.8×10(308乗)~-4.0×10(-324乗) 正:約4.9×10(-324乗)~1.8×10(308乗) | 8バイト |
数値 | Currency | -922,337,203,685,477.5808 ~ 922,337,203,685,477.5807 | 8バイト |
日付 | Date | 日付:西暦100年1月1日~西暦9999年12月31日 時刻:0:00:00 ~ 23:59:59 | 8バイト |
オブジェクト | Object | bookやWorksheetなどのオブジェクト | 4バイト |
真(True)・偽(False) | Boolean | True,False | 2バイト |
全て | Variant | 約20億文字 | 16バイト |
最後に
今回は変数に割り当てるデータ型について前回残った疑問を
『Integer』型と『Long』型の使い分けを例に書き留めました。
プログラミング初心者が触れるような簡単なプログラムでは消費メモリ量はさほど考えなくても影響がありませんが、
実際に業務で使用されるような大きなプログラムとなると消費メモリ量が大きくなりすぎてしまうことで
処理速度の低下や予期しないエラーに繋がってしまう可能性が出てきてしまいます。
データ型の種類と同様に最初から全てを覚える必要はありませんが
消費メモリ量というものがあり、データ型を使い分ける要因になっているということだけでも理解した上で
習得を進めていくと将来うれしいことがあるかもしれないですね^^
次回はプログラムを作成するときに『変数を宣言すること』について書き留めたいと思います。
ありがとうございました。
関連記事