VBA エラー 400「既にフォームは表示されています。モーダルにできません。」の原因と対処方法

VBAを実行するとVBA エラー 400「既にフォームは表示されています。モーダルにできません。」を見る機会はありませんか?

コードをみても誤った箇所がわからず途方に暮れる場合もあるかと思います。

そんな中で悩むことは、

・VBA エラー 400「既にフォームは表示されています。モーダルにできません。」の原因はなに?
・VBA エラー 400「既にフォームは表示されています。モーダルにできません。」の対処はどうすればよい?

ではないでしょうか?

今回は、
VBA エラー 400「既にフォームは表示されています。モーダルにできません。」の原因とサクっとできる対処方法について
まとめます!



VBA エラー 400「既にフォームは表示されています。モーダルにできません。」はどんなエラー?

Show メソッドを使ってすでに表示しているフォームを再度表示させようとしたときに発生するエラーです。

なお、モーダルとは、フォームが表示されている間、フォーム以外の操作ができない状態のことです。

タカヒロ
タカヒロ
連続処理をするときにあるあるですね。



VBA エラー 400の原因①「すでに表示しているフォームを再度表示させようとしている」

Show メソッドを使ってすでに表示しているフォームを再度表示させようとしたときに発生するエラーです。

以下はサンプルコードです。

こちらで、UserForm1を呼び出し、

Sub エラーテスト1()
    UserForm1.Show
End Sub

UserForm1をクリックすると自分自身を呼び出そうとするので、


Private Sub UserForm_Click()
    UserForm1.Show
End Sub

はい、エラーとなりますね。

 
 

VBA エラー 400の原因①「すでに表示しているフォームを再度表示させようとしている」の対処方法はフォームを再表示させないようにする

モーダル フォームを再表示するのではなくフォームに対して Unload ステートメントまたは Hide メソッドを実行するようにしましょう。


Private Sub UserForm_Click()
    Unload UserForm1
    UserForm1.Show
End Sub

Private Sub UserForm_Click()
    UserForm1.Hide
    UserForm1.Show
End Sub

はい、エラーは出なくなりましたね。



さいごに

今回は、
VBA エラー 400「既にフォームは表示されています。モーダルにできません。」の原因とサクっとできる対処方法について
まとめました。

VBAのエラーはパターンを知っておくと発生した時に慌てず対応することができますので、

しっかりと対処方法を把握するようにしておきたいですね!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です