EXCEL VBA - 変数とデータ型

変数

変数とは、値を一時的に保存しておくための場所です。変数を利用することで、計算の途中結果を一時的に保存することができます。

変数を利用するためには、変数の宣言を行います。変数の宣言とは、これからプログラムの中で宣言した変数を使用することを明記することです。変数の宣言方法は、以下のように記述します。

Dim 変数名
変数の宣言

Dim の後に半角スペースを 1 つ入れて変数名を指定します。変数名は、英数字、漢字、アンダーバーが利用できます。ただし、先頭の文字はアルファベットや漢字などの文字でなければなりません。

'' 正しい変数名
Dim 変数123
Dim val
Dim abc_def

'' 誤った変数名
Dim 123変数
Dim mail@gmai.com
Dim abc def
変数の宣言

また、変数はまとめて宣言することもできます。まとめて宣言するためには、変数名を , で区切って記述します。

Dim a, b, c
変数をまとめて宣言する

変数に値を格納するためには、以下のように記述します。以下の例では変数 x10 を格納しています。

Dim x
x = 10
変数に値を格納する

データ型

プログラムでは値を扱う場合、データ型と呼ばれるタイプに分類されます。例えば、整数型、文字列型、日付型などです。VBA では、以下のデータ型があります。

データ型
データ型表記値の範囲
文字列型Stringすべての文字列
Bool 型BooleanTrue または False
Byte 型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 オブジェクト参照するデータ型
バリアント型Variant あらゆる種類の値を保存できる型
ユーザ定義型任意 ユーザが自由に定義できる型

変数には型を指定することができます。変数に型を指定する場合は、以下のように変数名の後に As を付けて指定します。

Dim x As Integer
変数の型を指定する

もしも変数に型を指定しない場合は、どのような型の値でも格納することができます。一見、型を指定しない方が使い勝手が良いように思えるかもしれませんが、エラーの原因になるため非推奨です。例えば、整数を入れる予定の変数に文字列を入れてしまってもエラーにはならないためです。

変数の型と異なる値を格納しようとした場合、「型が一致しません。」というエラーが表示されます。このように制御することで、予期しないエラーを防ぐことができます。

数値型

数値型にはバイト型、整数型、長整数型、単精度浮動小数点型、倍精度浮動小数点型があります。バイト型、整数型、長整数型は整数、単精度浮動小数点型、倍精度浮動小数点型は実数を表すのに使います。

整数型には3つの型がありますが、格納する値の大きさによって、使用するデータ型を選択します。一番基本となる型は Integer 型です。0 から 255 までの範囲に収めたい場合は Byte 型を使います。より大きな数値を扱う場合には Long 型を使います。

Dim i As Integer
Dim b As Byte
Dim l As Long
バイト型、整数型、長整数型

Currency 型も数値を扱います。極めて大きい数値を小数点を含めて正確に扱う場合には Currency 型を使います。Currency 型は、お金の計算など大きな値を正確に計算が必要とされる場合に用いられます。

Dim c As Currency
バイト型、整数型、長整数型

文字列型

文字列型には文字を格納します。文字を記述する場合には文字を " で囲って記述します。

Dim s As String

s = "abc"
文字列型

数値を文字列型に格納することもできます。数値を格納する場合、" で囲む必要はありません。

Dim s As String

s = 123
文字列型

ただし、上記の例では文字列であるか数値であるか判断しにくいため、文字列型に数値を入れるべきではありません。文字列型には、明確に文字列のみを扱うべきです。

Dim s As String

s = "123"
文字列型

日付型

日付型には日付と時刻の値を格納します。値の指定方法は、日付のフォーマット文字列を指定するか、# で囲んだ形で日付のフォーマット文字列を指定します。

Dim d As Date

d = "2020年4月8日"
d = #2020/4/8#
d = #4/8/2020#
d = #12:34:56 PM#
文字列型

ブーリアン型

ブーリアン型は True または False のいずれかの値を取るデータ型です。ブーリアン型は、何かを比較した後で判定する際に取られる値です。例えば、数字の大小関係や、文字列の一致・不一致などです。

バリアント型

バリアント型はすべてのデータ型の値を格納することができるデータ型です。汎用的に使用できるため便利に感じるかもしれませんが、必要とするメモリも大きいため、特に理由がない限りは避けた方が良いでしょう。

関連記事