アクセス上位ページ
 
最近の更新内容
(1)-c.ユーザーフォームの表示 ⇐ [PREV]
[NEXT] ⇒ (2).各種コントロール解説

Excel VBA ≫ 5.ユーザーフォーム - はじめに(1)-d.ユーザーフォームのイベント

ユーザーフォームの初期処理、終了処理イベント

ユーザーフォームの基本的なイベントであるフォームの初期処理、終了処理に該当する3つのイベントについて説明します。

  • Initialize イベント
  • ユーザーフォームが表示される前に発生するイベントです。 変数の初期化や、コントロールの初期設定(リストボックスへのアイテム追加)などをする場合に使用します。
    ※厳密にはフォームが"表示される前"ではなく、フォームが"ロード"されるタイミングで発生します。
  • QueryClose イベント
  • ユーザーフォームが閉じられようとする直前で発生するイベントです。 ユーザーフォームがアンロード("Unload Me"など)されたり、フォーム右上のxボタンを押したりするとこのイベントが発生します。
    このイベントプロシージャには引数 Cancel があり、この引数に True を設定することでイベント(フォームを閉じる操作)をキャンセルすることができます。 ユーザーがフォームを閉じようとするときに確認したいことがある場合に使用します。
  • Terminate イベント
  • ユーザーフォームが閉じられたときに発生するイベントです。 ユーザーフォームに入力された値や処理した結果をワークシートや広域変数へ退避する場合などに使用します。




イベントプロシージャの追加

サンプルとして"ユーザーフォームの作成"ページのユーザーフォームを引き続き使用し、前述した3つのイベントプロシージャを追加します。
  1. ユーザーフォームオブジェクトの右クリックから [ コードの表示 ] を選択し、ユーザーフォームのコードを表示します。
  2. ユーザーフォームのコード表示
  3. コードを表示したら、上部のオブジェクトボックスから"UserForm"を選択します。
  4. オブジェクトボックスからUserFormを選択
  5. つづいて、プロシージャボックスから"Initialize"を選択します。
  6. プロシージャボックスからInitializeを選択
  7. すると Initialize イベントプロシージャが追加されます。
    この過程で"UserForm_Click"というイベントプロシージャが追加されてしまう場合がありますが、 この説明では使用しないので、削除しても問題ありません。
  8. Initialize イベントプロシージャが追加された様子
  9. QueryClose と Terminate イベントについても同様に追加します。
  10. QueryClose と Terminate イベントが追加された様子
  11. イベントプロシージャの追加が終わったら、各イベントの処理タイミングがわかるようにするために、 デバッグ表示のコードを追加します。また、QueryClose イベントプロシージャにはフォームを閉じるときに確認を行うコードを追加します。
  12. 各イベントプロシージャにコードを追加した様子

<サイト内関連リンク> 関連リンクもチェック!!
- イミディエイトウィンドウ
- MsgBox関数

イベント発生タイミングの確認

それでは実際にユーザーフォームを表示して、動作を確認してみましょう。
※動作を確認する前に [ Ctrl ]+[ G ]イミディエイトウィンドウを開いておきます。
  1. ユーザーフォームを[ マクロの実行 ]ボタンや、[ F5 ]キーなどから表示します。 イミディエイトウィンドウには以下のように表示されますので、Initialize イベントが発生したことがわかります。
  2. イミディエイトウィンドウの表示内容>
    UserForm_Initialize
    

  3. 次にユーザーフォーム上の『閉じる』ボタン、または、右上のxボタンを押してみます。 すると、フォームを閉じる前の確認ダイアログが表示されますので、 ここでは[ キャンセル ]ボタンを押下します。ユーザーフォームが閉じないことを確認してくさい。
  4. フォームを閉じる直前の確認でキャンセルボタンを押下 イミディエイトウィンドウには"UserForm_QueryClose"は表示され、"UserForm_Terminate"が表示されていません。 このことから、フォームを閉じる処理がキャンセルされて、Terminate イベントが発生しなかったことがわかります。

    イミディエイトウィンドウの表示内容>
    UserForm_Initialize
    CommandButton2_Click
    UserForm_QueryClose
    

  5. 再度ユーザーフォームを閉じる操作を行い、今度はフォームを閉じる前の確認ダイアログで[ OK ]ボタンを押下します。 フォームが閉じたことを確認してください。 イミディエイトウィンドウには"UserForm_Terminate"が表示され、Terminate イベントが発生したことがわかります。
  6. フォームを閉じる直前の確認でOKボタンを押下イミディエイトウィンドウの表示内容>
    UserForm_Initialize
    CommandButton2_Click
    UserForm_QueryClose
    UserForm_QueryClose
    UserForm_Terminate
    
カテゴリ内ページ
Excel VBA 〜 総目次 〜
- 5.ユーザーフォーム
-- (1).はじめに
--- (1)-a.ユーザーフォームとは?
--- (1)-b.ユーザーフォームの作成
--- (1)-c.ユーザーフォームの表示
--- (1)-d.ユーザーフォームのイベント



Page
Top