データ型と変数の型の指定

広告

VBAでは値を扱う場合にデータ型と言うものがあります。例えば何か計算をする場合は数値ですが、何かを表示する場合は文字列となります。同じ「1」という値であっても数値としての「1」の場合もありますし、文字の「1」の場合もあるわけです。

VBAで扱うデータ型には次のようなものがあります。

データ型VBAでの表記値の範囲
文字列型String文字列
ブール型BooleanTrue または False
バイト型Byte0から255の正の整数
整数型Integer-32,768から32,767の整数
長整数型Long-2,147,483,648から2,147,483,647の整数
単精度浮動小数点型Single-3.402823E38から-1.401298E-45
1.401298E-45から3.402823E38
倍精度浮動小数点型Double-1.79769313486231E308から-4.94065645841247E-324
4.94065645841247E-324から1.79769313486232E308
通貨型Currency-922,337,203,685,477.5808から922,337,203,685,477.5807
日付型Date西暦100年1月1日から西暦9999年12月31日 (日付と時刻)
オブジェクト型Objectオブジェクト参照するデータ型
バリアント型Stringあらゆる種類の値を保存できる型
ユーザー定義型Stringユーザー定義の型

データ型には色々な種類がありますが、文字列、数値、日付、ブール、オブジェクト、の5種類あると考えておいて下さい。数値には整数の他に浮動小数点型というのがありますが、例えば「123.45」のように小数点が含まれる数値を扱うものと考えて下さい。通貨型は極めて大きい数値を誤差なく計算するのに使います。

変数に型を指定する

変数には型を指定することができます。前のページで見た次の記述方法の場合は型を指定していませんでした。

Dim 変数名

型を指定していない場合は、どのような型の値でも格納する事が出来ます。この場合、値が格納された時にその格納された値の型が変数の型となります。

このように変数に型を指定していない場合、予定と違った値を格納してしまうようなミスが発生しやすくなります。例えば数値を格納する予定の変数を宣言したのに、間違えて文字を格納してしまっても、値を格納した時点ではエラーとならないためです。その為、変数を宣言する時はどのような型の値を格納するための変数なのかを、変数を宣言する時に合わせて型を指定するようにします。

書式は次の通りです。

Dim 変数名 as データ型

変数名の後に「as」を付け、その後にデータ型を指定します。例えば次のようになります。

Dim 変数12 as String
Dim var as Integer
Dim old as Integer, name as Object

変数に指定した型と異なるデータ型の値を格納しようとするとエラーとなります。

例えばInteger型を指定した変数「x」に文字列の"こんにちは"を格納したとします。

Sub プロシージャ名()
    Dim x As Integer

    x = "こんにちは"
End Sub

上記のマクロを実行しようとすると次のようなエラーが表示されます。

変数へ型の指定

このように変数にデータ型を指定することで、予期しない使われ方を防止する事が出来ます。出来る限り変数には型を指定するようにしましょう。

( Written by Tatsuo Ikura )