Excel VBA変数のスコープ(適用範囲)

変数の種類変数の宣言適用範囲適用期間
(代入した値が保持される期間)
プロシージャ
レベル
Dim(プロシージャ内)記述したプロシージャ内プロシージャ終了まで
プライベートモジュール
レベル変数
Pribate,Dim(宣言領域)記述したモジュール内モジュール終了まで
パブリック
モジュールレベル
Public(宣言領域)すべてのモジュール
・標準モジュール
・ブックモジュール
・シートモジュール
・ユーザーフォーム
・クラスモジュール
ブックを閉じるまで
静的変数Static(プロシージャ内)記述したプロシージャ内プロシージャを抜けても、
代入した値は保持される。

パブリックモジュールレベルの宣言は、すべてのモジュールで使える変数を宣言できますが、適用範囲が広くなる分、エラーになった時や、メンテナンスが大変。また意図しないタイミングで変数の値が破棄されることがあるようで、Public 変数がアプリケーション終了時まで有効であることを期待する VBA マクロの実装は、推奨されないようです。変数の適用範囲・期間は必要最小限がよろしいようです。

<今日のポイント>VBA 変数の適用範囲はできるだけ短くする。

よかったらシェアしてね!

この記事を書いた人

目次
閉じる