トップページ >
Excel >
VBA >
[×]ボタンで閉じられなくする
[×]ボタンで閉じられなくする
これは、けっこう有名なテクニックなので簡単に (^^;
UserFormを閉じるために[キャンセル]ボタンを用意し、[キャンセル]ボタンがクリックされたら何らかの後処理をするとします。しかし、ユーザーが[×]ボタンをクリックしてUserFormを閉じた場合は、この後処理が行われません。それでは困ります。[×]ボタンでUserFormを閉じられないようにするには、次のようにします。
UserFormが閉じる
直前には、
QueryCloseイベントが発生します。このとき、まだUserFormが閉じていない点に注目してください。QueryCloseイベントには、引数
Cancelと、引数
CloseModeが用意されています。引数CloseModeは、どんな方法でUserFormを閉じようとしているのかがわかり、引数Cancelは
「閉じようとしている動作」を中止するかどうかを指定できます。つまり、引数CloseModeを調べて[×]ボタンが押された場合に、「閉じようとしている動作」を中止してやればいいのです。
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then
MsgBox "[×]ボタンでは閉じられません。", 48
Cancel = True
End If
End Sub
引数CloseModeは、閉じようとした手段により次の値を返します。
0…[×]ボタンで閉じようとした
1…Unloadステートメントなどコードで閉じようとした
2…Windowsが終了した
3…タスクマネージャによって閉じられた
引数CancelにTrueを指定すると、「閉じようとしている動作」が中止されるのでUserFormは閉じられません。
[目次]に戻る