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にできました。
めっちゃ恥ずかしいミスをした。