目次
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. イベント構文理解が次のステップにつながる
イベントプロシージャの構文と仕組みを理解すると、
- なぜ自動で動くのか
- なぜ実行できないのか
- どこに書くべきなのか
といった疑問が整理されます。
コメント