【VBA】イベントプロシージャの基本構文|自動実行される仕組みと記述場所を徹底解説

スポンサーリンク

1. イベントプロシージャの基本構文とは

イベントプロシージャとは、
特定のイベントが発生したときに自動で実行される専用のVBAプロシージャです。

最大の特徴は、
Sub名があらかじめ決められており、自分で自由に命名できない
という点にあります。

基本構文は次の形になります。

Private Sub イベント名(引数)
    '処理内容
End Sub

この「イベント名」の部分が、
Excelが用意している 決められた名前 になっていることが重要です。


スポンサーリンク

2. なぜイベントは自動で実行されるのか

イベントプロシージャが自動実行される理由は、
Excel本体がイベント発生時に対応するプロシージャを自動で呼び出す仕組みになっているからです。

たとえば、

  • ブックを開いた
  • セルの値を変更した

といった動作が起きると、Excelは内部で

「このイベントに対応するプロシージャは存在するか?」

を確認します。

該当するプロシージャが存在すれば、
ユーザー操作を待たずに即座に処理を実行します。

これが、
マクロを実行していないのに処理が動く理由です。


スポンサーリンク

3. イベントプロシージャはどこに書くのか

イベントプロシージャは、
通常の標準モジュールには記述できません。

イベントの種類ごとに、
専用のオブジェクトモジュール に記述します。

代表的な例は次のとおりです。

  • Workbookイベント → ThisWorkbook
  • Worksheetイベント → 各シート(Sheet1など)

たとえば、Workbookを開いたときのイベントは
ThisWorkbook に次のように記述します。

Private Sub Workbook_Open()
    'ブックを開いたときの処理
End Sub

このように、
イベントの種類と記述場所はセットで決まっている
という点が非常に重要です。


スポンサーリンク

4. 自動実行される条件と注意点

イベントプロシージャは便利ですが、
自動で動くからこそ注意すべき点もあります。

自動実行される条件

  • プロシージャ名が正しい
  • 記述場所が正しい
  • イベントが実際に発生している

このどれか一つでも欠けると、
イベントは発火しません。

注意点

  • 処理が重いと操作性が悪くなる
  • 無限ループが発生する可能性がある
  • どこで処理が動いているか分かりにくくなる

そのため、イベント処理は
必要最低限の処理に絞る設計が重要になります。


スポンサーリンク

5. イベント構文理解が次のステップにつながる

イベントプロシージャの構文と仕組みを理解すると、

  • なぜ自動で動くのか
  • なぜ実行できないのか
  • どこに書くべきなのか

といった疑問が整理されます。

コメント

タイトルとURLをコピーしました