ユーザーフォームが閉じたあとに発生するイベント(Terminateイベント)

ユーザーフォームが閉じたあとに発生するイベントが Terminate イベントです。このイベントに対するイベントプロシージャを作成することで、ユーザーフォームが閉じるあとに行いたい処理を実行することができます。ここでは Excel のユーザーフォームでユーザーフォームが閉じるたあとに発生する Terminate イベントについて解説します。

(Last modified: )

Terminateイベントの利用方法

イベントフォームが閉じたあとに発生するイベントが Terminate です。ユーザーフォームオブジェクトで発生します。このイベントに対するイベントプロシージャを作成することで、ユーザーフォームが閉じたあとに行いたい処理などを実行することができます。スコープ外になったときに発生します。」と記載されています。

※ 公式サイトではこのイベントが発生するタイミングとして「オブジェクトを参照するすべての 変数が Nothing に設定され、オブジェクトのインスタンスへの参照がメモリからすべて削除されるか、オブジェクトへの最後の参照が スコープ外になったときに発生します。」と記載されています。

それでは例として次のようにテキストボックスとコマンドボタンが 1 つずつ設置されたユーザーフォームで Terminate イベントに対するイベントプロシージャを作成してみます。

Terminateイベントの利用方法(1)

ユーザーフォームの何もコントロールが設置されているところをダブルクリックしてください。

Terminateイベントの利用方法(2)

ユーザーフォームの既定のイベントに対するイベントプロシージャが表示されます。

Private Sub UserForm_Click()

End Sub

Terminateイベントの利用方法(3)

Visual Basic Editor の画面右上にある次の部分をクリックし、イベントの種類として Terminate を選択してください。

Terminateイベントの利用方法(4)

Terminateイベントの利用方法(5)

Terminate イベントに対するイベントプロシージャが表示されました。(最初に表示された Click イベント用のイベントプロシージャは消して頂いて構いません)。

Private Sub UserForm_Terminate()

End Sub

Terminateイベントの利用方法(6)

それではユーザーフォームが閉じたあとに行いたい処理をこのイベントプロシージャの中に記述していきます。今回はダイアログを表示するようにしました。

Private Sub UserForm_Terminate()
    MsgBox "作業は完了しました"
End Sub

Terminateイベントの利用方法(7)

それでは実際に試してみます。「Sub/ユーザーフォームの実行」をクリックしてください。

Terminateイベントの利用方法(8)

ユーザーフォームが表示されたら、右上に表示されている「×」をクリックしてユーザーフォームを閉じてください。

Terminateイベントの利用方法(9)

ユーザーフォームが閉じたあとに Terminate イベントが発生し、ダイアログが表示されます。

Terminateイベントの利用方法(10)

このように Terminate イベントのイベントプロシージャを作成することで、ユーザーフォームが閉じたあとに行いたい処理を実行することができます。

-- --

Excel のユーザーフォームでユーザーフォームが閉じるたあとに発生する Terminate イベントについて解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。