Excel VBAで「マクロの実行後、次のマクロ実行時まで変数を保持したい」と思ったことはありませんか?
このような場合に便利なのがモジュールレベル変数です。今回は、モジュールレベル変数の有効期間と使い方について、カウンター機能で動作確認しながら説明します。
内容:
確認のExcelは「Microsoft® Excel® for Microsoft 365 MSO」 (バージョン 2510)です。
VBAサンプルコード:カウンター機能
Dim x As Long Sub カウンター() x = x + 1 MsgBox x End Sub
この例では、xというモジュールレベル変数を使い、マクロを実行するたびに値が増加します。具体的には、マクロを繰り返し実行するたびにカウンターが1ずつ増加したメッセージが表示されます。
ポイント:Dimをモジュールの先頭に記述することで、そのモジュール内で変数が保持されます。
モジュールレベル変数の有効期間
-
有効期間:モジュールが読み込まれている間、値を保持します。
-
リセット条件:
Excelを終了すると変数は初期化されます。
または、VBAのリセット(開発環境の停止ボタンなど)でも値は消えます。
そのため、モジュールレベル変数は「一時的な状態保持」に便利ですが、永続的なデータ保存には不向きです。
参考: 変数の有効期間について (VBA) | Microsoft Learn
予備知識:スコープについて
モジュールレベル変数は、宣言方法によって参照できる範囲(スコープ)が異なります。
- Public:他のモジュールからも参照可能(グローバル変数)。
- Private / Dim:宣言したモジュール内のみ有効。
利用上の注意点
- 不必要に多くのモジュールレベル変数を使うとメモリを消費します。
- 複数プロシージャで値を共有する場合、意図しない値の変更に注意。
- 状態管理が複雑になる場合は、外部ファイルやシートへの保存を検討しましょう。
モジュールレベル変数は、VBAで状態を一時的に保持したいときに非常に有効です。
有効期間と基本的なスコープを理解し、正しく活用することで、効率的なマクロ設計が可能になります。
以上、Excel VBAでモジュールレベル変数の有効期間と使い方|カウンター機能で動作確認でした。