変数の適用範囲(スコープ)
変数は宣言を記述した場所や記述方法によってに、使用できる範囲が異なります。宣言した変数が使用できる範囲のことを『適用範囲』または『スコープ』と呼びます。
例えば、以下のようにプロシージャ内で宣言した変数は別のプロシージャで使うことはできません。
プロシージャレベル変数(ローカル変数)
宣言したプロシージャ内でのみ使うことができる変数です。
同じプロシージャ内で変数名は重複できません。
一番よく使われます。
モジュールレベル変数
宣言したモジュール内でのいみ使うことができる変数です。
モジュールレベル変数は、プロシージャ内ではなくモジュールの宣言セクションに記述します。DimもしくはPrivateで宣言します。
宣言セクションはモジュールの先頭から最初のプロシージャまでのエリアです。以下の画像で言うと、赤枠部分が宣言モジュールになります。
パブリック変数(グローバル変数)
パブリック変数は、すべてのモジュールのすべてのプロシージャで使用できる変数です。宣言セクションにPublicで宣言します。
変数の適用範囲のまとめ
- プロシージャ内で宣言した変数は、そのプロシージャ内でのみ利用できる(プロシージャレベル変数・ローカル変数)
- 宣言セクションにDimもしくはPrivateで宣言した変数は、そのモジュール内で利用できる(モジュールレベル変数)
- 宣言セクションにPublicで宣言した変数は、すべてのモジュール、すべてのプロシージャで利用できる(パブリック変数)