VBAプログラミング

【VBA】変数のデータ型を「Integer」と「Long」で使い分ける理由

前回の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,7672バイト
数値Long-2,147,483,648 ~ 2,147,483,6474バイト
数値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バイト
オブジェクトObjectbookやWorksheetなどのオブジェクト4バイト
真(True)・偽(False)BooleanTrue,False2バイト
全てVariant約20億文字16バイト

 

 

最後に

 

 

今回は変数に割り当てるデータ型について前回残った疑問を

Integer』型と『Long』型の使い分けを例に書き留めました。

 

プログラミング初心者が触れるような簡単なプログラムでは消費メモリ量はさほど考えなくても影響がありませんが、

実際に業務で使用されるような大きなプログラムとなると消費メモリ量が大きくなりすぎてしまうことで

処理速度の低下や予期しないエラーに繋がってしまう可能性が出てきてしまいます。

 

データ型の種類と同様に最初から全てを覚える必要はありませんが

消費メモリ量というものがあり、データ型を使い分ける要因になっているということだけでも理解した上で

習得を進めていくと将来うれしいことがあるかもしれないですね^^

 

次回はプログラムを作成するときに『変数を宣言すること』について書き留めたいと思います。

ありがとうございました。

 

関連記事





-VBAプログラミング

© 2024 ポンサラの逆襲