目的
VBAの変数について理解して利用できる。
VBAの変数の概要と利用方法
変数の概要
「変数」は、「プログラミングで利用する値やオブジェクト」を呼び出すための「名前」です。変数は呼び出す値やオブジェクトへの結びつきを変更する(値を入れ替える)ことができます。
※ 似たようなものに「定数」がありますが、「定数」は呼び出すものを変更できません。
変数の利用方法
変数は次のように記述することで利用できます。
Dim 変数名 As 型
手順としては次のように分けることができます。
- 変数の利用を宣言(Dimキーワード)
- 名前をつける
- 型を指定する(Asの記述後)
❶「宣言」
変数の宣言にはDimというキーワードを利用します。
❷「名前」をつける
Dimと記述したら、続けて変数の名前を指定します。
名前付けにはルールがあります。
- 変数名の最初の一文字目は「文字」を使用する
- スペースは利用できない(文字と文字の間を開けない)
- 長さは半角英数字で255文字まで(2文字目以降で数字とアンダースコアが利用可能)
- Excelで使用されている関数やVBAで利用されているメソッドや構文等の単語は変数名に利用できない
下はらNGになる例です。
❸型を指定する
名前を指定したら、次は「データ型」を指定します。「データ型」の指定には「As」を使用します。「データ型」はデータの種類のことで次のものがあります。
扱う方の種類 | 大きさ | データ型 |
整数を扱うもの | 小(1バイト)=(0~255) | Byte |
中(2バイト)=(-32,768~32767) | Integer | |
大(4バイト) =(-2,147,483,648~2,147,483,647) | Long | |
浮動小数を扱うもの | 小(4バイト) | Single |
大(8バイト) | Double | |
通貨を扱うもの | (8バイト) | Currency |
日付を扱うもの | (8バイト) | Date |
文字列を扱うもの | (文字列の長さ分) | String |
真偽値を扱うもの | (2バイト) | Boolean |
オブジェクトを扱うもの | (4バイト) | Object |
何でも入る型を扱うもの | (数値:16バイト) (文字列:文字列の長さ分) | Variant |
上図について
- バイト数は覚える必要はありませんが大小関係は把握しておくと便利です。
- 数値の範囲は覚える必要はありませんが大体の数を把握しておくと便利です。
オブジェクト型や、表にない固有オブジェクト型については「ExcelVBAの変数 Part.2」で扱います。
変数宣言を強制させる
宣言をしない変数の利用
変数はDimを使って宣言をしなくても利用ができます。しかし変数がどの型を利用しているか、分かりづらくなってしまいます。
変数の型の確認
プログラミング言語には基本的に型を調べる関数が準備されています。VBAでは変数の型を確認する方法としてVarType関数があります。
サンプルプロシージャ1
Sub variablePra()
varSample1 = "sample"
varSample2 = 555
MsgBox VarType(varSample1)
MsgBox VarType(varSample2)
MsgBox VarType(varSample3)
End Sub
実行結果
varSample1の型は「8」(String型)となっています。
varSample2の型は「2」(Integer型)となっています。
varSample3の型は「0」(Variant型)となっています。
変数を宣言しない(型を指定していない)場合はVariant型となります。
上で示した「図1:データ型の種類」のすべての値を確認すると以下のようになります。
サンプルプロシージャ2
Sub variablePra2()
Dim Type_byte As Byte
Dim Type_integer As Integer
Dim Type_long As Long
Dim Type_single As Single
Dim Type_double As Double
Dim Type_currency As Currency
Dim Type_date As Date
Dim Type_string As String
Dim Type_boolean As Boolean
Dim Type_object As Object
Dim Type_variant As Variant
MsgBox "Type_byte:" & Chr(9) & VarType(Type_byte) & Chr(10) & _
"Type_integer:" & Chr(9) & VarType(Type_integer) & Chr(10) & _
"Type_long:" & Chr(9) & VarType(Type_long) & Chr(10) & _
"Type_single:" & Chr(9) & VarType(Type_single) & Chr(10) & _
"Type_double:" & Chr(9) & VarType(Type_double) & Chr(10) & _
"Type_currency:" & Chr(9) & VarType(Type_currency) & Chr(10) & _
"Type_date:" & Chr(9) & VarType(Type_date) & Chr(10) & _
"Type_string:" & Chr(9) & VarType(Type_string) & Chr(10) & _
"Type_boolean:" & Chr(9) & VarType(Type_boolean) & Chr(10) & _
"Type_object:" & Chr(9) & VarType(Type_object) & Chr(10) & _
"Type_variant:" & Chr(9) & VarType(Type_variant) & Chr(10)
End Sub
実行結果
宣言の強制
VBAではプログラミングを行う前に変数の宣言を強制させる設定があります。強制させることで無駄な変数が作成されるデメリットをなくし、管理がしやすくなります。
設定方法
「ツール」の「オプション」を選択
ダイアログボックスにある「変数の宣言を強制する」にチェックを入れます。
これで変数の宣言を強制するための設定は完了です。
新しい「標準モジュール」を作成して確認してみます。
新しく作成したModule4に「Option Explicit」と記述されています。これが変数の利用時に宣言を強制する設定となります。
宣言を行わず変数を利用してみます。
この記事で最初に利用した変数宣言なしのプログラムを利用してみます。
実行結果はコンパイルエラーとなります。変数の宣言が必要になったことが確認できました。
今回は以上となります。
ブックマークのすすめ
「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。