VBAのShowメソッドのmodalをmodelと書いてバグらせた話

投稿者: | 2021年11月1日

VBAでパスワード認証のユーザフォームを作ったときに、SetForcusメソッドというものを知って便利だなあと思ったので、検索システムの方でも初期化時やリセット時にテキストボックスにフォーカスが移動するようにしようと思いました。
しかし、UserForm呼び出し直後はフォーカスが移動しませんでした。
なぜだろうと自分のコードを見返していたらmodalをmodelと書いていることが判明しました。

1. UserFor呼び出し直後にSetForcusメソッドが効かない

UserFormがActiveでない場合SetForcusは効きません。ではいつUserFormがActiveになるかというと、showメソッドで呼び出したときです。

私はUserFormをShowメソッドを用いて呼び出しているので問題ないはずです。

2. Showメソッドの引数のスペルミス

Showメソッドの構文は以下のとおりです。

[ object ].Show modal

私が間違えたのはmodalのスペルです。model(モデル)ではありませんでした。

そもそもmodal(モーダル)、というよりモーダルウィンドウとは、あるウィンドウがActiveのとき、背面のウィンドウの操作を受け付けなくなるようなやつです。(モーダルウィンドウ)

ちゃんとmodalを指定したらUserForm呼び出し直後にActiveにできました。

めっちゃ恥ずかしいミスをした。

3. 参考文献

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください