変数宣言時に初期値を設定するには

VBAの変数宣言は一般的には以下のようなコードを書きます。

Dim 変数名 As データ型

これだと変数定義のみで、既定の初期値が適用されます。

初期値を設定したい場合は変数定義と初期値の設定をコロン(:)で連結します。Object型に限らず、クラスオブジェクト型の場合はSetステートメントも必要です。

Dim 変数名 As データ型: 変数名 = 初期値
Dim 変数名 As データ型: Set 変数名 = 初期値

複数の変数の初期値を1行で定義する場合は以下のように書きます。初期値の設定ごとにコロンで連結します。

Dim 変数名1 As データ型, 変数名2 As データ型: 変数名1 = 初期値: 変数名2 = 初期値


VBAでは暗黙で既定の初期値が設定される

VBAでは変数宣言のあとに初期値を設定しなくても、既定の初期値が設定されます。

データ型 対象データ型 初期値
ブール型 Boolean FALSE
数値型 Byte、Integer、Long、Single、Double 0
通貨型 Currency 0
日付型 Date 1899/12/30 00:00:00
オブジェクト型 Object Nothing
文字列型 String vbNullString
バリアント型 Variant Empty

これらの既定の初期値とは別の値を1行で設定したい場合にはコロン(:)で設定します。


各データ型の初期値設定例

以下は各データ型での1行での初期値設定例です。

注意が必要なのは10行目のオブジェクト型の場合で、2行で書く場合と同様にSetステートメントが必要になります。

これは他のクラスオブジェクトを使う場合も同じです。

22行目ではObject型にはFontオブジェクトを設定しているためNameプロパティでフォントの名前を出力しています。

上のコードを実行すると以下が出力されます。

True
5
30000
2147000000
0.1234567
1.23456789012346E+19
987654321.1234
2018/06/11 12:34:56
MS 明朝
abcd
Null


複数の変数宣言と同時に初期値を設定する方法

複数の変数宣言と同時にそれらの変数の初期値を1行で設定することも可能です。

上のコードの変数宣言を1行で書くと以下のようになります。実行結果も同じため省略します。

ただ、こういう書き方は可読性が落ちるだけですのでやめておきましょう。