ユーザーフォームの右上の×ボタンでフォームを閉じれないようにする方法です。
予め「閉じる」ボタンをコマンドボタンで設置していて、閉じるボタンを押した際にイベントなどの処理がある場合などに、×ボタンで閉じれないように制御するときに便利です。
記述方法はとても簡単なのでぜひ覚えてみてください。
その他のユーザーフォームの作成や操作方法について下記記事をご覧ください。
- ユーザーフォームの作り方と表示方法
- ユーザーフォームのプロパティ一覧と表示方法
- ユーザーフォームのサイズを変更する
- ユーザーフォームの背景色を変更する
- ユーザーフォームを閉じる方法
- ユーザーフォームにコントロールを追加する方法
- コントロールの数と名前と種類を取得する
1.×ボタンで閉じれないようにする方法
×ボタンを制御するにはユーザーフォームの「QueryClose」イベントを使用します。
「QueryClose」イベントはユーザーフォームを閉じようとした際に、閉じる前に実行されるイベントです。
引数「CloseMode」でどのような方法で閉じようとしているのか数値型で取得出来ますので、引数「Cancel」にTrueを設定することで「閉じる」処理をキャンセルできます。
定数名 | 値 | 説明 |
vbFormControlMenu | 0 | ×ボタンで閉じる |
vbFormCode | 1 | Unloadステートメントなどのコードで閉じる |
vbAppWindows | 2 | Windowsを閉じる |
vbAppTaskManager | 3 | タスクマネージャーで閉じる |
基本的には「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しています。
これにより×ボタンで閉じれなくなります。