VBAで変数に対して使用できるデータ型の種類、使い方、注意点のまとめです。
変数の作成およびデータ型の指定方法についてはDimの記事で解説しています。
データ型一覧
バイト型(Byte)
0~255までの整数を保管することができます。
使用メモリは1バイトで、型宣言文字はありません。
ブール型(Boolean)

使用メモリは2バイトで、型宣言文字はありません。

ちなみに見ての通り、Typename関数を使うとデータ型を取得できます。

0がFalse、1がTrueとなります。
整数型(Integer)
-32768~32767までの整数を保管することができます。
使用メモリは2バイトで、型宣言文字は%です。
長整数型(Long)
-2147483648~2147483647までの整数を保管することができます。
使用メモリは4バイトで、型宣言文字は&です。
単精度浮動小数型(Single)
小数点を含む大体-3.402823の38乗~3.402823の38乗の範囲内の数字を保管することができます。言語によってはfloatとも呼ばれます。
浮動小数というのは「1234567.8は12345678の1/10」「0.00012345678は12345678の1/100000000000」みたいに、仮の桁数(仮数)と指数を別々に保管することでデータを軽くするような形式を言います。要するに小数を使いたい時に使います。
使用メモリは4バイトで、型宣言文字は!です。


倍精度浮動小数型(Double)
小数点を含む大体-4.94065645841247の324乗~4.94065645841247Eの324乗の範囲内の数字を保管することができます。Singleの上位互換です。pythonだとfloatはこっちになります。
使用メモリは8バイトで、型宣言文字は#です。
通貨型(Currency)
-922,337,203,685,477.5808 ~ 922,337,203,685,477.5807の整数+4桁の小数を保管することができます。
使用メモリは8バイトで、型宣言文字は@です。
日付型(Date)
西暦100年1月1日~西暦9999年12月31日までの日付および0:00:00 ~ 23:59:59の間の時刻を保管することができます。
使用メモリは8バイトで、型宣言文字はありません。
文字列型(String)
0~2GBの枠内で好きな長さの文字列を保管することができます。
使用メモリは10バイト+文字のバイト数です。型宣言文字は$です。
オブジェクト型(Object)
オブジェクトを保管することができます。
使用メモリは4バイトで、型宣言文字はありません。
オブジェクトとはアプリケーション(Application)、ブック(Workbook)、シート(Worksheets)、セル(Range)などのVBAで何か操作をする対象となるものです。これら固有のオブジェクトと差別化する意味で、Objectは総称オブジェクト型とも呼ばれます。
Setメソッド

たとえば左の式ではデータ型がintegerの変数nに直接値を指定していて、これは動きますが、


オブジェクト変数にオブジェクトを代入するには、Setメソッドを使います。
Set 変数 = オブジェクト




オブジェクト変数の参照解除


バリアント型(Variant型)
特に縛りなく、あらゆるデータを保管できます。RangeもWorksheetsもObjectで代用できたように、Variantはデータ型を問わずあらゆるデータを格納することができます(数値と文字列ではデータの扱いがちがうなどの原因で、意図しない挙動をすることがまれにあります)。
特にデータ型を指定しない場合、自動的にこれになります。何を指定していいかわからなければVariantにしておけば基本OKです。
使用メモリは数値なら16バイト、文字なら22バイト+文字数です。型宣言文字はありません。


コメント