- ベストアンサー
VBAのフォームにフォーカスを移す方法。
タイトル通りなのですが、たとえばWordのVBAフォームを表示しつつWordで作業をし、 そのままフォームをマウスなどでクリックすることなく、カーソルをフォーム内のテキストボックスなどに移す方法(メソッドなど)は無いでしょうか? つまり、キーボードのみの操作のみで出来ないかと言うことです。 色々試してダメだったので、ダメ元で質問いたします。ご教示頂ければありがたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>Alt+Tabだと、Wordの他に立ち上げているソフトとWordの往き来になってしまい、Wordとフォームとの間の往き来には今のところならないようなのですが、設定によってはフォームとWordの間の往き来になるのでしょうか? ユーザーフォームはVBEの画面ではなく、たとえば、以下のようなコードでWord文書にModeless状態で表示しているユーザーフォームのことなのでしょうか? UserForm1.Show vbModeless この場合なら、簡便に対応するなら以下のようなマクロをショートカットキー(例えばAlt+M)に登録して、このショートカット操作を実行すれば、フォーム上のTextBox1に移動するので、あとはTabキーで、オブジェクトを選択できます。 Sub Sample() UserForm1.TextBox1.SetFocus End Sub
その他の回答 (1)
- MackyNo1
- ベストアンサー率53% (1521/2850)
Alt+TabでフォームとWord画面を移動し、Tabキーでフォーム内のテキストボックスを移動し(必要に応じてShiftキーも併用)、Enterキーで編集するというような手順ではダメなのでしょうか?
お礼
ようやくですが、マクロをキーボードに登録することで無事に現実的に解決いたしました、ありがとうございました。
補足
ご回答ありがとうございます。 Alt+Tabだと、Wordの他に立ち上げているソフトとWordの往き来になってしまい、Wordとフォームとの間の往き来には今のところならないようなのですが、設定によってはフォームとWordの間の往き来になるのでしょうか? たしかメソッドにフォームをアクティブにするのがあったと思いましたが、それ(があれば)を使った方が良いのかもしれません(ちょっと確証は持てないのですが)。 結局、WordとVBAのフォームを往き来できれば、tabstopをメインのテキストボックスだけにしてあるので、Tabを押すだけでそのテキストボックスにフォーカスが移ります。すなわちそれで解決します。申し訳ないですが、上記の点についてご教授できるようでしたらお願いいたします。
お礼
たびたびのご回答恐縮です。 その通りです、Modeless表示されているユーザーフォームを言っていました。言葉足らずで申し訳ございません。 ああ、たしかにマクロをキーボードに登録することで解決できそうです、フォーム上の操作にこだわっていて、気が回らなかったです。 2度もご回答頂きありがとうございました。おかげさまで助かりました。また何かありましたらよろしくお願いいたします。