構文
構文は以下の通りです。
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
Cancel = True
MsgBox "このフォームは[X]ボタンで閉じることができません。"
End If
End Sub
If CloseMode = vbFormControlMenu Then
Cancel = True
MsgBox "このフォームは[X]ボタンで閉じることができません。"
End If
End Sub
解説
UserForm_QueryCloseは、フォームが閉じられようとしたときに発生します。特に、フォームの[X]ボタンがクリックされた場合や、プログラムからフォームが閉じられる場合に呼び出されます。Cancelは、閉じる動作をキャンセルするかどうかを制御します。Trueに設定すると、フォームは閉じられません。CloseModeは、どの方法でフォームが閉じられようとしているかを示します。vbFormControlMenuは、フォームの[X]ボタンがクリックされたことを示します。
【CloseModeの種類】
定数 | 値 | 内容 |
vbFormControlMenu | 0 | フォームの[×]ボタンがクリックされて閉じられた場合 |
vbFormCode | 1 | コードからフォームが閉じられた場合 |
vbAppTaskManager | 2 | タスクマネージャーからフォームが終了させられた場合 |
vbFormMDIForm | 3 | MDI親フォームが閉じられた場合 |
プログラミング例
具体的なプログラミング例を紹介します。
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
Cancel = True
MsgBox "このフォームは[X]ボタンで閉じることができません。"
End If
End Sub
If CloseMode = vbFormControlMenu Then
Cancel = True
MsgBox "このフォームは[X]ボタンで閉じることができません。"
End If
End Sub
上記のプログラムを使用することで、ユーザーが誤ってフォームを閉じてしまうのを防ぐことができます。
まとめ
UserForm_QueryCloseイベントを使用することで、フォームが閉じられる際の動作を制御できます。CloseModeがvbFormControlMenuのときに、CancelをTrueに設定すると、フォームの[X]ボタンで閉じることができなくなります。