ユーザーフォームが閉じる直前に処理を実行する : Excel VBA

ユーザーフォームが閉じる直前に発生するイベントは、QueryCloseです。

イベント構文 : UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

ユーザーフォームが閉じる直前に、QueryCloseイベントが発生します。閉じる直前なので、フォームに入力されたデータをシートに代入するなどの時に使用します。また、CloseModeを判定することで閉じる理由を取得することができます。
《引数》
・Cancel : Trueを代入すると、閉じるのを中止します。
・CloseMode : 閉じるイベントの発生理由が取得できます。発生理由は下記の定数で判定できます。
 vbFormControlMenu : 値は0、右上の[×]ボタンがクリックされた場合
 vbFormCode : 値は1、VBAコードのUnloadが実行された場合


Homeに戻る > Excel フォームのTipsへ

Excel実行画面

ユーザーフォームを閉じる為、シート上にコマンドボタンを配置し、クリックすると閉じるコードをClickイベント内に入力します。
ユーザーフォームを閉じる為、シート上にコマンドボタンを配置

コマンドボタンがクリックされると、Clickイベントが発生し、Unloadでユーザーフォームを閉じます。
Clickイベントが発生し、Unloadでユーザーフォームを閉じます

Unloadが実行されると、QueryCloseが発生しメッセージを表示、ユーザーフォームを閉じます。
Unloadが実行されると、QueryCloseが発生

コマンドボタンのClickイベントと、ユーザーフォームのQueryCloseイベントコードです。


CloseModeを判定し、[×]ボタンでは閉じられなく、設置したコマンドボタンのみ閉じるように出来ます。。
CloseModeを判定


Excel VBAコード

■ユーザーフォームを閉じるコード
Option Explicit

Private Sub CommandButton1_Click()
    Unload UserForm1
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    MsgBox "ユーザーフォームを閉じます"
End Sub

■CloseModeを判定し設置したコマンドボタンのみで閉じるようにしたコード
Option Explicit

Private Sub CommandButton1_Click()
    Unload UserForm1
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode = vbFormControlMenu Then
        Cancel = True
        MsgBox "[×]ボタンではなく、[閉じる]ボタンを使用してください。"
    End If
End Sub


Homeに戻る > Excel フォームのTipsへ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved