ExcelVBA技
ユーザーフォーム
E13U006
E13U006 (Excel2000~2013)
ユーザーフォームの[×]をクリックしたとき[キャンセル]ボタンを押したことにしたい
ユーザーフォームの[×](閉じる)ボタンをクリックしたときの処理に困っていませんか。
[キャンセル]や[閉じる]ボタンのイベントに終了時の処理を記述して Unload Me としている場合に[×]をクリックされると終了時の処理がされないため不都合が発生します。
そのため[×]ボタンを使用不可や非表示にしている例をよく見かけますが、これはWindowsの準備インターフェイスを改悪するものでまったく薦められません。 ユーザーは終了しようとして[×]をクリックするわけですから、それを止めるのは本末転倒です。
[×]ボタンを押されても不都合が発生しないようにすべきです。
ユーザーフォームの[×]をクリックしたとき、[キャンセル]や[閉じる]ボタンを押したイベントを発生する方法を示します。 [Alt]+[F4]キーでの終了にも対応しています。
'フォーム モジュール Option Explicit 'Cancel(終了)ボタン(CommandButton名->cmdCancel)が配置されている例 Private Sub cmdCancel_Click() '↓終了時の処理を記述 MsgBox "cmdCancel_Click" '←ボタンが押された確認用 ' Unload Me End Sub Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) 'vbFormCode 1 コードからUnloadステートメントが実行された If CloseMode <> vbFormCode Then cmdCancel.Value = True '[×]がクリックされた End Sub