• 締切済み

[VBA]MsgBoxが消えません。

ExcelでFormダイアログで、メインメニューを 作成しています。 今度、入力項目のエラーチェックを行うこと になったのですが、エラーを検出した場合、 メインメニューのサイズより大きなMsgBoxを 表示しています。OK/CancelでMsgBoxが消え、 メインメニューが再表示されるのですが、 メインメニューの領域外が、MsgBoxの表示 が残ったままになってしまいます。 (制御そのものはメインメニューに移っています。) このような場合でも、MsgBoxをきれいに消す にはどのようにしたらよろしいでしょうか?

みんなの回答

  • taseki
  • ベストアンサー率66% (155/233)
回答No.1

ご質問を読み違えていたらすみません。 ようするにMsgBoxの下にあったオブジェクトなどが再描画されない、ということでしょうか。 Repaintメソッドを使ってはどうでしょうか。 フォームのAutoRedrawプロパティを設定する手もありますが、メモリやパフォーマンスに影響することがあります。

kokorone
質問者

お礼

MsgBoxを閉じた後、 Application.ScreenUpdating = True を実行することで、表示上のごみを消すことが できました。 ありがとうございました。

kokorone
質問者

補足

判りづらくてすみません。 メインメニューが、 (0.100),(400,100),(0,300),(400,300) の領域に表示し、その上に、MsgBoxを表示 します。 位置指定していませんが、 (100,50),(300,50),(100,350),(300,350) が表示領域だとした場合、 MsgBoxを閉じたとき、 (0.100),(400,100),(0,300),(400,300) は、メインメニューで再描画されますが、 (100,50),(300,50),(100,100),(300,100)および (100,300),(300,300),(100,350),(300,350) のエリアがクリアされずに残ってしまうのです。 よろしくお願いします。