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