トップ > 逆引きで学ぶ ユーザーフォーム&コントロール > 1-31 [×]ボタンでクローズさせない

1-31 [×]ボタンでクローズさせないユーザーフォーム   2021.11.16

目次  前頁   次頁  索引

QueryCloseイベントは、フォームが閉じる直前に発生するイベントです。
このイベントは、フォームの閉じ方を感知し、必要に応じてフォームが閉じることをキャンセルできます。
例えば、ユーザーが[×]ボタンを押し、フォームを閉じるのをキャンセルする、また逆にコードでフォームを閉じるのをキャンセルするといった処理が可能です。


サンプルコード①

ユーザーが[×]ボタンを押し、フォームを閉じるのをキャンセルする

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode = vbFormControlMenu Then
        Cancel = True
    End If
End Sub

◇Cancel
引数CancelにTrueを設定すると、クローズをキャンセルします。
◇CloseMode
引数CloseModeは、どの操作でクローズしようとしているのかを判定します。

CloseModeに対応した組み込み定数は次の2つです。
・vbFormControlMenu
 ユーザーフォームの[×]ボタンが押された場合。実体は数値の「0」です。
・vbFormCode
 VBAのコードでUnloadステートメントが実行された場合。実体は数値の「1」です。


サンプルコード②

VBAのコードからユーザーフォームのクローズをキャンセルする

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode = vbFormCode Then
        Cancel = True
    End If
End Sub

ページトップへ戻る
Copyright(C) 2009- 坂江 保 All Rights Reserved.