| 変数の種類 | 変数の宣言 | 適用範囲 | 適用期間 (代入した値が保持される期間) |
| プロシージャ レベル | Dim(プロシージャ内) | 記述したプロシージャ内 | プロシージャ終了まで |
| プライベートモジュール レベル変数 | Pribate,Dim(宣言領域) | 記述したモジュール内 | モジュール終了まで |
| パブリック モジュールレベル | Public(宣言領域) | すべてのモジュール ・標準モジュール ・ブックモジュール ・シートモジュール ・ユーザーフォーム ・クラスモジュール | ブックを閉じるまで |
| 静的変数 | Static(プロシージャ内) | 記述したプロシージャ内 | プロシージャを抜けても、 代入した値は保持される。 |
パブリックモジュールレベルの宣言は、すべてのモジュールで使える変数を宣言できますが、適用範囲が広くなる分、エラーになった時や、メンテナンスが大変。また意図しないタイミングで変数の値が破棄されることがあるようで、Public 変数がアプリケーション終了時まで有効であることを期待する VBA マクロの実装は、推奨されないようです。変数の適用範囲・期間は必要最小限がよろしいようです。
<今日のポイント>VBA 変数の適用範囲はできるだけ短くする。
