エクセルVBAでユーザーフォームを閉じるボタンで閉じられなくする!

エクセルでユーザーフォームを作った時、誤って閉じるボタンで閉じてしまった!という事はないでしょうか。もう一度、開き直すのは面倒です。不用意に、ユーザーフォームの×ボタンから、フォームを閉じたくない! といった場合に、エクセルVBAで、ユーザーフォームを閉じるボタンで、閉じられなくする方法があります。QueryCloseイベントで、ユーザーフォームが閉じる直前に、閉じるのをキャンセルします。ここでは、ユーザーフォームの×ボタンを無効にする、方法を2つ紹介しています。1つは、引数CloseModeに、ユーザーフォームの閉じる方法を指定して、×ボタンから閉じられなくしています。もう1つは、引数CloseModeに値を指定して、×ボタンからユーザーフォームを閉じられなくしています。

 

 

ユーザーフォームの閉じるボタンを無効にする

エクセルVBAで、ユーザーフォームを閉じる時、閉じるボタンから閉じられないようにしましょう。

引数 CloseModeに、「ユーザフォームの閉じる方法」を指定します。

vbFormControlMenu  : 右上の「×」ボタンがクリックされた時(値は0)

vbFormCode     : VBAコードから Unloadが実行された時(値は1)

×ボタンで閉じられなくする

ユーザーフォームの閉じるボタンをクリックした時、フォームを閉じられなくするコードです。

引数 CloseModeに、vbFormControlMenuを指定します。

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
Cancel = True
End If
End Sub

 

 

×ボタンをクリックした時にメッセージを表示する

ユーザーフォームを閉じるボタンをクリックした時、メッセージを表示するコードです。

引数 CloseModeに、vbFormControlMenuを指定します。

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
MsgBox “終了ボタンをクリックして下さい。”
Cancel = True
End If
End Sub

CloseModeに値を指定して閉じるボタンを無効にする

引数 CloseModeに値を指定して、ユーザーフォームを閉じるボタンで、閉じられなくします。

0 :  「×」ボタンをクリックした時

1 :  コードから Unloadステートメントが実行された時

2 :  Windowsが終了した時

3 :  タスクマネージャによって閉じられた時

 

 

×ボタンで閉じられなくする

引数 CloseModeに「0」を指定して、ユーザーフォームを閉じるボタンで、閉じられなくするコードです。

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then
Cancel = True
End If
End Sub

×ボタンをクリックした時にメッセージを表示する

ユーザーフォームを閉じるボタンをクリックした時、メッセージを表示するコードです。

引数 CloseModeに「0」を指定します。

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then
MsgBox “終了ボタンをクリックして下さい。”
Cancel = True
End If
End Sub

 

 

QueryCloseイベント

UserForm が閉じる直前に発生するのが、QueryCloseイベントです。

引数 CloseModeは、どんな方法でユーザーフォームを閉じようとしているのか分かります。

引数 Cancelは、閉じる動作を指定できます。Cancelに Trueを指定すると、閉じるのを中止できます。

こちらの記事もご覧ください。⇒エクセルVBAが初心者でも短期間でマスターできる楽パソ!音声と映像で自宅で学べる。

こちらの記事もご覧ください。⇒プログラミングスキルが初心者でも短期間でマスターできる楽パソ!音声と映像で自宅で学べる。

ユーザーフォームの閉じるボタンの対策法

ユーザーフォームを、閉じるボタンで閉じられなくすると、どうやってユーザーフォームを閉じるの? といった疑問が湧いてしまします。だったら、ユーザーフォームを他のフォームに移動させる! ユーザーフォームを閉じる!そういったボタンを作成すればいいです。もしくは、ファイルを終了させるボタンを作成すれば、問題は解決します。もちろん、それはエクセルVBAで作成できます。エクセルVBAで、ユーザーフォームを閉じるボタンで閉じられなくすると、うっかり、誤ってボタンを押してしまって、閉じてしまったという失敗が防げます。ボタンで、操作をコントロールすると、不要な動作を制御できます。

こちらの記事もご覧ください。⇒エクセルVBAでユーザーフォームを開く、閉じる

エクセル・ワード・パワーポイント・アクセス・マクロVBA・WEBプログラミングを入門から応用までらくらくマスターできる ➡ 動画パソコン教材

エクセルのマクロとVBAを入門から応用まで映像と音声でわかりやすく学ぶことができます。
↓ ↓ ↓ ↓ ↓
ワード・エクセルパワーポイント・アクセスとエクセルマクロVBA・WEBプログラミング・パソコンソフト作成を入門から応用まで映像と音声でわかりやすく学ぶことができます。
↓ ↓ ↓ ↓ ↓
VBA・Java・WEB・C#・HTML/CSSプログラミングを入門から応用まで映像と音声でわかりやすく学ぶことができます。
↓ ↓ ↓ ↓ ↓
ワード・エクセル・パワーポイント・アクセスを入門から応用まで映像と音声でわかりやすく学ぶことができます。
↓ ↓ ↓ ↓ ↓

ワード・エクセル・パワーポイント・アクセスとWEBプログラミングを入門から応用まで映像と音声でわかりやすく学ぶことができます。
↓ ↓ ↓ ↓ ↓