調べたいExcel-VBAの使用例などキーワードを入力してください

ユーザーフォームの【×】ボタンを使えなくする

Excel-VBAユーザーフォーム
スポンサーリンク

ユーザーフォームのボタン非表示か使えなくしたいと思ったことありませんか?

入力や検索などでオリジナルフォームでエクセルを操作するように、ユーザーフォームを作ったのに制作者が想定していない操作をされてしまい、マクロエラーなどに遭遇した経験ありませんか?

よくあるトラブルで、エクセル住所録を作った時にフォームに従って操作していけば、何の問題もなかったのですが、ユーザーフォームの右上の×ボタンを押されてしまい、動作ができなくなってしまったとスタッフに言われた経験がありました。

残念ながら×ボタン消せそうにないので、機能停止させましょう。

スポンサーリンク

ユーザーフォームの×ボタンを機能停止する

まず始めに、×ボタンを使えなくするユーザーフォーム自体をVBA画面でクリックします。

コントロールを配置していないところをクリック

ユーザーフォームをクリックすると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

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

このようにユーザーフォームにVBAコードを書くと、ボタンを押すとこのように表示されます。

OKを押すと表示中のユーザーフォームに戻ります

こうすることにより、必ずフォーム上のコマンドボタンを押さないと何も操作できなくすることができるので、うっかりフォームを消してしまったりされることはなくなります。

スポンサーリンク

全て×ボタン機能停止はキケン!

ユーザーフォームのボタンが使えなく設定すると、必ず意図した操作でないとプログラムが動かなくなるので、ついつい全部のユーザーフォームにVBAコードを書いてしまうと思わぬトラブルに遭います。

マクロエラー時に調べるためにワークシートを直接見なくてはいけない時に、全てのユーザーフォームのボタンが使えなくて困った経験があります。

その為にメインメニューとなるユーザーフォーム1つだけは×ボタンが使えるようにするか、隠しコマンドとして特定のラベルをクリックするとユーザーフォームが閉じられるようにする必要があると思いますよ。

またボタン機能停止の他に意図しない操作をされないように、タイマー設定して自動的にフォームを開いたり、エクセル画面の上にあるリボンやシート自体を非表示にしてしまう事も、誤操作を回避する手段としては有効ですよね。

ボタン1つで作業完了へ
ちょっとの工夫でエクセル作業が飛躍的に早く終わったらいいなあ~と思いませんか? 面倒くさい作業よ!さようなら!

スポンサーリンク


ユーザーフォーム
参考になりましたらシェア宜しくお願い致します

山頂テラスデッキからの三段紅葉(2019年11月)

フリーパスって助成金つぎ込んでいいの?

コロナ禍のGo To トラベル以外にも助成金だらけでうらやましいね。

安くなったフリーパスで遊びに行きたいけど、給与も減って余裕ないよね。

Excel VBA