苦労してExcel-VBAを組み込んだエクセルファイルを他人に渡して使ってもらうと、エラー表示になったと言われたことありませんか?
原因は簡単で、エクセル操作をオリジナル入力画面のユーザーフォームを使用して、全ての操作を行うようにしていますが、誤ってフォーム右上にある✖印をクリックしてユーザーフォームを閉じてしまったので、操作不能になってしまったことが原因です。
解決方法は簡単で、✖ボタン停止してユーザーフォームを閉じられないようにする方法をご紹介します。
QueryCloseイベントで✖ボタン停止する
エクセルのユーザーフォームにはフォーム右上に✖印があり、クリックすることでフォームを閉じられるようになっています。

このフォームの✖印を誤ってクリックしてフォームを閉じられてしまうと、ワークシート上には何もないので次の操作ができなくなってしまいます。
そこで誤って✖印をクリックしたら、メッセージを発して閉じられないようにします。
まず始めにユーザーフォーム自体をクリックすると、VBAコードを記載する場所に移動できます。

次に、このPrivate Sub UserForm_Click()~End Subをすべて消して、下記コードに差し替えます。
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
MsgBox “【CLOSE】ボタンを使用してください”
Cancel = True
End If
End Sub
- ユーザーフォームが閉じられる直前に実行する
- もしCloseModeがvbFormControlMenu だったら
- メッセージ「【Close】ボタンを使用してください」と表示する
- ユーザーフォームを閉じる処理をキャンセルする
- Ifステートメント終了
- マクロ終了
このようにVBAコードを記載すると、下記のような表示が出るようになり、下の図のように誤ってユーザーフォームを閉じられると、メインMenuユーザーフォームに行けなくなってしまう事を防いでいます。


このように全てのユーザーフォームにコピペしているので、意図しない操作によるフォーム閉じられることが無くなりました。
エクセルファイルを様々な人と共有することあると思いますので、意図しない操作って意外と多いので、対策は必要ですよ!
また、✖印使用停止の他にリボンツールバー非表示やシート名非表示も合わせて使うと、安心できますよ。






よく見られているページ
-
エクセルの計算式の値を数字として読み取るVALUE関数
-
VBAの画面のちらつきがたった1行で解決して処理高速化する方法
-
COUNT関数を使って参加人数を自動的に数えるエクセル関数使用法
-
エクセルの時刻表示を0:00ではなく24:00にする方法
-
チェックボックスでチェック有と無しそれぞれの処理を変える方法
-
1クリックで上書き保存してエクセルファイルを閉じる方法
-
エクセル計算式が#VALUE!エラーになったセルを空欄にする方法
-
条件に一致したセルを繰り返し探してVBAで文字色を変える方法
-
コマンドボタンの色をクリックするたびに黒色と赤色を入れ替える方法
-
エクセルシートの保護したらマクロエラーになった時のVBA対処法


新着ページ