VBAでは操作をきっかけとして自動的に実行されるプロシージャの事を「イベントプロシージャ」と言います。自動実行のきっかけとなる操作の事を「イベント」と呼び、「イベント」はブックやワークシート、ユーザーフォーム等のオブジェクトに対して発生します。このイベントを利用して「ブックがアクティブになった時に発生するイベントプロシージャの作り方」について紹介します。
構文
イベントプロシージャの記述方法は以下の通りです。
Private Sub Workbook_Activate()
[実行する処理内容]
End Sub
[説明]:
ブックがアクティブになった時に発生するイベントプロシージャにはActivateプロシージャを使用します。[実行する処理内容]にはブックがアクティブになった際に実行させる内容を記述します。内容を纏めると、「ブックがアクティブになった場合には[実行する処理内容]を実行して下さい。」との意味になります。
[記述例]:
Private Sub Workbook_Activate()
MsgBox "このブックがアクティブになりました。"
End Sub
作り方
(1)VBE(VBA記述画面)を開きます。
※画面の開き方はこちらの手順を参考にして下さい。
(2)ブックオブジェクトをダブルクリックします。
(3)オブジェクトボックスの▼ボタンをクリックします。
(4)プルダウン一覧の中から「WorkBook」を選択します。
(5)この時点で「Workbook_Open」イベントプロシージャが表示されます。(これは自動的に作成される仕組みとなっている様です。)
(6)プロシージャボックスの▼ボタンをクリックします。
(7)プルダウン一覧の中から「Activate」を選択します。
(8)「Workbook_Activate」イベントプロシージャが表示されます。
(9)(8)で作成したイベントプロシージャに実行させる内容を記述します。今回は実行された際に「このブックがアクティブになりました。」がMsgBoxで表示される内容を記述しました。
Private Sub Workbook_Activate()
MsgBox "このブックがアクティブになりました。"
End Sub
ブックがアクティブになった時に発生するイベントプロシージャの作成方法についての説明は以上です。
実行例
今回の例としては、Book1.xlsmブックとBook2.xlsxブックが開かれており、Book1.xlsmブックには上記で説明したイベントプロシージャが記述されています。
(実行前)
Book2.xlsxブックがアクティブ(選択状態)になっています。
(実行後)
Book1.xlsmブックをアクティブ(選択状態)にすると「このブックがアクティブになりました。」が表示されます。(Book1.xlsmブックが選択された事で、プロシージャが実行されてメッセージが表示されました。)
サンプル
上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。
おわりに
今回はブックがアクティブになった時に発生するイベントプロシージャの作成方法について説明しました。オブジェクトボックスでオブジェクトを選択すると、そのオブジェクト既定の「Workbook_Open」イントプロシージャが自動的に作成(上記(5)の内容)されます。不要な場合は削除して下さい。