shikumika’s diary

日々の事務作業で手間なことを簡単にできる仕組み(自動化、方法など)、困ったことの解決方法を調べた備忘録

【Excel VBA】モジュールレベル変数の有効期間と使い方|カウンター機能で動作確認

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でモジュールレベル変数の有効期間と使い方|カウンター機能で動作確認でした。