The following two tabs change content below.




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



最新記事 by taka (全て見る)
- 『雑記』最近の私の話~ - 2019年9月26日
- 【動画】自作パソコン構成変更!ケースをNZXT H500に交換しました! - 2019年6月5日
- VBA 『Array関数』指定した要素で配列を作成する - 2019年5月23日
- 「動画」初完全ワイヤレスイヤホン『Jabra Elite Active 65t』 - 2019年5月17日
- VBA 日付で令和を簡単に判定してみよう - 2019年5月7日
割と知られていることかもしれませんが、ExcelVBAのユーザーフォーム上の【×】でフォームを閉じないように設定する方法をご紹介します。※下の画像の赤枠の部分です


解説
そもそもなぜ必要必要なのか?
そもそもなぜ必要なのか?それは閉じるボタンやキャンセルボタンを用意していてそのボタンを押される前提でプログラムを作成している場合。
【×】が押されてしまい用意していたボタンが押されなかった場合、なんらかの不具合が発生する可能性が出てきますよね?そのようなことがないように未然に【×】をクリックされないようにしておくと安心できますよね。
仕組み
まずUserFormが閉じる直前には、QueryCloseイベントが発生します。そしてこのイベントには、引数Cancelと、引数CloseModeというそれぞれの指定項目があります。
CloseMode
CloseModeではどのような状況でユーザーフォームが閉じられようとしているかを取得し下の値を返してきます。
値 | 説明 |
---|---|
0 | ユーザーが UserForm 上のコントロール メニューで [×]が押された時。 |
1 | Unload ステートメント等で閉じられようとしたとき |
2 | Windowsが終了しようとしたとき |
3 | タスク マネージャーがアプリケーションを閉じます。 |
If CloseMode = 0 Then
このコードだと【引数0】を指定していますのでフォーム上の×に対してのIFとなります。
Cancel
Cancelは上記の値に対してその動作を中止するかを設定することができます。指定するには【True/False】で指定します。
Trueを指定した場合は【×】閉じることを止めることができます。
Cancel = True
これで閉じることを中止することができます。
Cancel = False
逆にFalseを設定するとそのままフォームは閉じられます。
サンプルコード
では実際に【×】でフォームが閉じれないようにするコードを記載しておきますので参考にしてください。
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) If CloseMode = 0 Then MsgBox "×では閉じることができません。閉じるボタンを押してください" Cancel = True End If End Sub
フォロー・チャンネル登録お願いします
VBA以外についてのブログはこちら↓
https://yb-log.com/■Twitterフォロー
Follow @taka_pc1027■YouTubeチャンネル登録
コメントを残す