• 締切済み

エクセルVBAについての質問です

VBAについて質問です。 開始入力ボタンと、完了入力ボタンがエクセルシート上にあります。 ボタンを押すとそれぞれのユーザーフォームが立ち上がり、フォーム内の指定したテキストボックスにフォーカスが合うように設定しています。 ユーザーフォームを立ち上げた状態で、エクセル上のボタンを押し、フォームの切り替えが行いたいと考えていて、ユーザーフォームのShowModal プロパティをFalseにしました。 エクセル上のボタンを押すことができるようになったのですが、ユーザーフォーム立ち上げ時にテキストボックスへフォーカスが合わなくなりました。 どうにか解決する方法はないものでしょうか? 教えていただきたいです。 ※完了入力も同じようなユーザーフォームです

みんなの回答

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.3

回答No.2の追加です。 SetFocusが可変なのでしたら ボタンのClickイベントの UserForm1.Show の後でSetFocusしたいTextBoxにSetFocusすればいかがでしょう If 〇〇 Then UserForm1.TextBox1.SetFocus End If とか 可変でない場合はTextBoxにたいして無条件で実行すればいいと思います。 プロパティのTabindexを0に変更する必要もありません。

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.2

> ユーザーフォーム立ち上げ時にテキストボックスへフォーカスが合わなくなりました。 立ち上げた時でしたら UserForm_Initialize() のSetFocusをやめて UserFormのフォーカスしたいテキストボックスのプロパティで TabStop True で Tabindexを0 に設定してください。

  • kon555
  • ベストアンサー率51% (1842/3559)
回答No.1

 アイデアレベルですが幾つか解決案を書いておきます。 1.ユーザーフォームの立ち上げ時にはShowModal プロパティをTrueにしておき、後からFalseにする。 2.ユーザーフォーム上に、フォーム切り替え用のボタンを設置する。 3.ユーザーフォーム上に、ShowModal プロパティをFalseにする用のボタンを設置する。