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



The following two tabs change content below.

taka

あることがキッカケでVBAを独学で勉強しました、今ではブログを通してVBAでできることを解説しつつ、VBAや他の言語の勉強、ブログ運営の勉強をしています(^^♪

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

 

解説

 

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

 

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

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

仕組み

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

CloseMode

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

 

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

 

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

 

Cancel

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

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

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

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

サンプルコード

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

 

 

ファイルやコードの利用、WEBサイトの利用について

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

Sponsored Link

 

特別企画!IT企業の実情をIT企業の社長に聞いてみた!

独学者が多いVBAプログラマー「せっかくプログラム言語を覚えたし、IT企業に転職しようかな?でも、IT企業って良いイメージ聞かないし実際はどうなんだ?」という疑問にIT企業の社長に直に聞いてみました!!

コメントを残す

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