UserFormを×で閉じれなくする方法



割と知られていることかもしれませんが、ExcelVBAのユーザーフォーム上の【×】でフォームを閉じないように設定する方法をご紹介します。※下の画像の赤枠の部分です

 

解説

 

そもそもなぜ必要必要なのか?

 

そもそもなぜ必要なのか?それは閉じるボタンやキャンセルボタンを用意していてそのボタンを押される前提でプログラムを作成している場合。

【×】が押されてしまい用意していたボタンが押されなかった場合、なんらかの不具合が発生する可能性が出てきますよね?そのようなことがないように未然に【×】をクリックされないようにしておくと安心できますよね。

仕組み

まずUserFormが閉じる直前には、QueryCloseイベントが発生します。そしてこのイベントには、引数Cancelと、引数CloseModeというそれぞれの指定項目があります。

CloseMode

CloseModeではどのような状況でユーザーフォームが閉じられようとしているかを取得し下の値を返してきます。

 

説明
0ユーザーが UserForm 上のコントロール メニューで [×]が押された時。
1 Unload ステートメント等で閉じられようとしたとき
2Windowsが終了しようとしたとき
3タスク マネージャーがアプリケーションを閉じます。

 

このコードだと【引数0】を指定していますのでフォーム上の×に対してのIFとなります。

 

Cancel

Cancelは上記の値に対してその動作を中止するかを設定することができます。指定するには【True/False】で指定します。

Trueを指定した場合は【×】閉じることを止めることができます。

これで閉じることを中止することができます。

逆にFalseを設定するとそのままフォームは閉じられます。

サンプルコード

では実際に【×】でフォームが閉じれないようにするコードを記載しておきますので参考にしてください。

 

 

ファイルやコードの利用について

サンプルコードなどは当サイトの免責事項をよくお読みになってからお使いください。

Twitterフォロー

 

ブログの更新通知を受け取るにはこちらにはこちら↓Twitterもやってます(^^♪Excelについてはあまり触れませんがブログの更新のお知らせはツイートしています(^^♪

Twitterフォロー

 



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ABOUTこの記事をかいた人

あることがキッカケでVBAを独学で勉強している、非IT企業の会社員。 今はVBAで出来ることを模索しながら別の開発言語の取得、基本情報技術者試験合格が目標