ExcelVBA覚え書 プロシージャ呼出し順

Excelマクロのお勉強。
WorkbookやFormといったオブジェクトにデフォルトで備わっているプロシージャ(メソッド)って、どんな順番で呼び出されるのよ?って思ったので調べてみた。
今更だけど・・・
ちなみにバージョンは2003。

ブックを開いたとき(起動時)
Workbook_Open
Workbook_Activate
Workbook_WindowActivate

※ブックをVisible=FalseにしたときはActivateプロシージャは走らないと思うので、基本はOpenプロシージャに処理を書く。

ブックを閉じるとき(終了時)
Workbook_BeforeClose
Workbook_WindowDeactivate
Workbook_Deactivate

※起動時と同様。

フォームロードしたとき
UserForm_Initialize
フォーム.Showしたとき
UserForm_Layout
UserForm_Activate
フォーム.Hideしたとき
なし
フォームアンロードしたとき
UserForm_QueryClose
UserForm_Terminate

QueryCloseとTerminateの違いは何?って思ったけど、QueryCloseはアンロードの起動処理で、Terminateはホントのアンロード処理という感じ。
つまり、アンロードの起動処理なのでアンロードするかどうかプロシージャ内で分岐できるのがQueryClose。CancelパラメータにTrueを設定するとアンロードを中止できる。
QueryCloseで何事もなければTerminateプロシージャが呼び出されて、アンロード処理の記載ができるようだ。

Tags:,

Add a Comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください