Excel VBA ユーザーフォームを×ボタンで閉じれないようにする方法

ユーザーフォーム作成/操作

ユーザーフォームの右上の×ボタンでフォームを閉じれないようにする方法です。

予め「閉じる」ボタンをコマンドボタンで設置していて、閉じるボタンを押した際にイベントなどの処理がある場合などに、×ボタンで閉じれないように制御するときに便利です。

記述方法はとても簡単なのでぜひ覚えてみてください。

その他のユーザーフォームの作成や操作方法について下記記事をご覧ください。

1.×ボタンで閉じれないようにする方法

×ボタンを制御するにはユーザーフォームの「QueryClose」イベントを使用します。

QueryClose」イベントはユーザーフォームを閉じようとした際に、閉じる前に実行されるイベントです。

引数「CloseMode」でどのような方法で閉じようとしているのか数値型で取得出来ますので、引数「Cancel」にTrueを設定することで「閉じる」処理をキャンセルできます。

定数名説明
vbFormControlMenu0×ボタンで閉じる
vbFormCode1Unloadステートメントなどのコードで閉じる
vbAppWindows2Windowsを閉じる
vbAppTaskManager3タスクマネージャーで閉じる

基本的には「vbFormControlMenu(0)」の×ボタンくらいしか使用しないと思います。

2.QueryCloseの表示方法

×ボタンを制御するにはユーザーフォームの「QueryClose」イベントを使用します。

と言っても、そのイベントはどこに?

という方向けに、簡単に説明します。

まず制御したいユーザーフォームのコードを表示します。

プロジェクトのユーザーフォームモジュールを右クリックして一番上のコードの表示を選択するか、ユーザーフォーム上で右クリックして一番上のコードの表示で表示出来ます。

コードを開いたら次は、左上の「General」を「UserForm」に変更します。

そうすると「Private Sub UserForm_Click()」が自動的に作成されますので、こちらは使用しないので削除します。

右側でユーザーフォームのイベントを選択できますので「QueryClose」を選択すると、自動的に「Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)」が作成されます。

2.サンプルコード

上記の方法で「QueryClose」イベントを作成したら、下記サンプルコードを記述する事で×ボタンで閉じる事ができなくなります。

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

    If CloseMode = 0 Then
        Cancel = True
    End If
    
End Sub

「If CloseMode = 0 Then」で×ボタンで閉じようとしたことを判定しています。

Trueの場合、処理をCancelしています。

これにより×ボタンで閉じれなくなります。

タイトルとURLをコピーしました