HOME
変数とは、プログラム内で使用する値を一時的に格納しておく箱のようなものです。変数を利用するために、変数の宣言を行います。
変数とは、プログラム内で使用する値を一時的に格納しておく箱のようなものです。変数を利用するために、まずは以下のように変数の宣言を行います。
Dim 変数名
変数名は、英数字、漢字、アンダーバーが利用できます。ただし、先頭の文字はアルファベットや漢字などの文字でなければなりません。
' OK
Dim 変数123
Dim val
Dim abc_def
' NG
Dim 123変数
Dim mail@gmai.com
Dim abc def
また、変数はまとめて宣言することもできます。まとめて宣言するためには、変数名を ,
で区切って記述します。
Dim a, b, c
変数に値を格納するためには、以下のように記述します。以下の例では変数 num
に 10
を格納しています。
Dim num
num = 10
プログラムで値を扱う場合、値はデータ型と呼ばれるタイプに分類されます。例えば、整数型、文字列型、日付型などです。VBA では、以下のデータ型があります。
データ型 | 表記 | 値の範囲 |
---|---|---|
文字列型 | String | すべての文字列 |
Bool 型 | Boolean | True または False |
Byte 型 | Byte | 0 から 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 num As Integer
変数の型と異なる値を格納しようとした場合、「型が一致しません。」というエラーが表示されます。例えば、以下のサンプルコードでは整数型に文字列型を代入しようとしているため、エラーが発生します。
Dim num As Integer
num = "abc" ' 型が一致しない
上記の例を見ると、変数にはデータ型を指定しない方がどのような種類の値も保存できるバリアント型になるため使い勝手が良いように見えます。しかし、データ型を指定しなければ、その変数にどのようなタイプのデータが入っているのか予測しにくいため、エラーの原因となります。そのため、変数には可能な限りデータ型を指定した方がエラーが少なくなります。
数値型にはバイト型、整数型、長整数型、単精度浮動小数点型、倍精度浮動小数点型があります。バイト型、整数型、長整数型は整数、単精度浮動小数点型、倍精度浮動小数点型は実数を表すのに使います。
整数型には3つの型がありますが、格納する値の大きさによって、使用するデータ型を選択します。
Dim i As Integer ' もっとも基本的なデータ型
Dim b As Byte ' 0 ~ 255 までの範囲に収める場合のデータ型
Dim l As Long ' より大きな整数を扱う場合のデータ型
Currency 型も数値を扱います。極めて大きい数値を小数点を含めて正確に扱う場合には Currency 型を使います。Currency 型は、お金の計算など大きな値を正確に計算が必要とされる場合に用いられます。
Dim c As Currency
プログラムで極めて大きい数値を計算する場合、有限桁数で表す場合があります。その際、丸め誤差を含む非常に近い大きさの小数同士で減算を行ったときに有効数字が減ってしまう桁落ちという現象が発生します。Currency 型は、そのような誤差を許さない厳密な計算を行うときに使用されます。
文字列型には文字を格納します。文字を記述する場合には文字を "
で囲って記述します。
Dim str As String
str = "abc"
数値を文字列型に格納することもできます。数値を格納する場合、"
で囲む必要はありません。
Dim str As String
str = 123
ただし、上記の例では文字列であるか数値であるか判断しにくいため、文字列型に数値を入れるべきではありません。文字列型には、明確に文字列のみを扱うべきです。
Dim str As String
str = "123"
日付型には日付と時刻の値を格納します。値の指定方法は、日付のフォーマット文字列を指定するか、#
で囲んだ形で日付のフォーマット文字列を指定します。
Dim date As Date
date = "2022年4月16日"
date = #2022/4/16#
date = #4/16/2022#
date = #12:34:56 PM#
ブーリアン型は True または False のいずれかの値を取るデータ型です。ブーリアン型は、何かを比較した後で判定する際に取られる値です。例えば、数字の大小関係や、文字列の一致・不一致などです。
バリアント型はすべてのデータ型の値を格納することができるデータ型です。汎用的に使用できるため便利に感じるかもしれませんが、必要とするメモリも大きいため、特に理由がない限りは避けた方が良いでしょう。