ユーザーフォームの✖ボタンでフォーム自体閉じられないようにする

エクセル検索
HOMEUserForm印刷画面ファイル図形
日付・時刻データセル関数VBA関数

苦労してExcel-VBAを組み込んだエクセルファイルを他人に渡して使ってもらうと、エラー表示になったと言われたことありませんか?

原因は簡単で、エクセル操作をオリジナル入力画面のユーザーフォームを使用して、全ての操作を行うようにしていますが、誤ってフォーム右上にある✖印をクリックしてユーザーフォームを閉じてしまったので、操作不能になってしまったことが原因です。

解決方法は簡単で、✖ボタン停止してユーザーフォームを閉じられないようにする方法をご紹介します。

QueryCloseイベントで✖ボタン停止する

エクセルのユーザーフォームにはフォーム右上に✖印があり、クリックすることでフォームを閉じられるようになっています。

印刷メニュー
シート上にはユーザーフォームしかありません

このフォームの✖印を誤ってクリックしてフォームを閉じられてしまうと、ワークシート上には何もないので次の操作ができなくなってしまいます。

そこで誤って✖印をクリックしたら、メッセージを発して閉じられないようにします。

まず始めにユーザーフォーム自体をクリックすると、VBAコードを記載する場所に移動できます。

×ボタン

次に、このPrivate Sub UserForm_Click()~End Subをすべて消して、下記コードに差し替えます。

コピペOK!

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
MsgBox “【CLOSE】ボタンを使用してください”
Cancel = True
End If
End Sub

解説
  1. ユーザーフォームが閉じられる直前に実行する
  2. もしCloseModeがvbFormControlMenu だったら
  3. メッセージ「【Close】ボタンを使用してください」と表示する
  4. ユーザーフォームを閉じる処理をキャンセルする
  5. Ifステートメント終了
  6. マクロ終了

このようにVBAコードを記載すると、下記のような表示が出るようになり、下の図のように誤ってユーザーフォームを閉じられると、メインMenuユーザーフォームに行けなくなってしまう事を防いでいます。

vbFormControlMenu
波乗りアヒル

このように全てのユーザーフォームにコピペしているので、意図しない操作によるフォーム閉じられることが無くなりました。

エクセルファイルを様々な人と共有することあると思いますので、意図しない操作って意外と多いので、対策は必要ですよ!

また、✖印使用停止の他にリボンツールバー非表示やシート名非表示も合わせて使うと、安心できますよ。

関連記事

どこかにビューーン
ちょっとの工夫で往復無料の時代が来た!!

新着ページ

よく見られているページ

大容量無料ファイル転送サービス【ACデータ】 無料イラスト【イラストAC】

紅葉スポット

2024年5月11日からマイルと楽天ポイントとの相互交換提携開始!

交換レート0.5:1なので半分になってしまいますが、使い方次第で実質3倍の価値まで引き上げられる方法です。