「で、そこに記述されるプロシージャの種類なんだけど、これも大きく分けると2つの種類に分かれる。
1つめは、今までずっと使ってきた"標準プロシージャ"。
VBEのF5キーやExcelの[マクロの実行]で実行できるプロシージャだよ。
そして2つめは、"イベントプロシージャ"。
これはF5キーや[マクロの実行]では実行できないプロシージャなんだ」
「えええ!?[マクロの実行]で実行できないんなら、どうやって実行したらいいんだい?」
驚いてたずねる星くんに、八木くんはフフンと笑います。
「星。プログラムはなにもユーザーが実行することで、いつも動作するわけではないんだ。
例えば数値を入力するテキストボックスに文字列を入力してプログラムに怒られた経験はないかい?」
「あああ…あるある! あと日付を入力するとき、変な日付を入力して"日付が正しくありません!"ってメッセージが出たこともあったよ」
「そう!それなんだ。
そのとき、ユーザーフォームの背後でテキストボックスの入力を監視するプログラムが実行されていたんだよ。
つまり、それこそが"イベントプロシージャ"なんだ。
イベントプロシージャは、ユーザーの操作で発生する様々なイベント、"フォームを開く"とか、"値を入力する"とか、"アプリケーションを終了する"とか… そういったときに、"ユーザーが正しく操作したかチェックする"とか、"次に起動するために必要な情報を収集する"とか…そういった処理を、裏でこっそり実行してるんだ」
星くんが、な~るほど!という顔をしました。
「そうか…それで、どんな状態でアプリを終了しても次に開くときは決められた設定で起動したり、
間違った選択をしたとき、親切にプログラムが教えてくれたりするんだね!」
「うん。これらの処理にイベントプロシージャは欠かせない。
もしイベントプロシージャがないと、値を入力したあと、"値の確認プロシージャ"をわざわざユーザーに実行させなきゃならないだろ?」
「そっか…。で、そのイベントプロシージャを使えるのが、
さっきいった"オブジェクトにくっついてるモジュール"ということでいいのかい?」
八木くんが目を見開きました。
「すばらしいぞ、星。全くその通りだ。おまえ本当にVBAのセンスがあるな…」
えへへ…と照れる星くんをよそに、八木くんがカタカタと図を作り始めました。