- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ユーザーフォームのSetFocusが働かない?)
エクセルユーザーフォームでのSetFocusが機能しない問題
このQ&Aのポイント
- エクセルのユーザーフォームには、textboxとCommandButtonが配置されています。
- textbox1に入力される数字は10以下に限定されており、それ以上の数字が入力されるとエラーが表示されます。
- しかし、エラーが発生した場合にtextbox1にフォーカスを戻す際に、textbox2をスキップしてCommandButton1にフォーカスが移ってしまいます。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
よーく考えてみて。 TextBox1 にユーザーが何らか入力する。 ユーザーが何らかの操作で TextBox1 から他のコントロールにフォーカスを移動しようとする。 TextBox1 の Exit イベントが駆動する。 TextBox1_Exit イベント プロシージャが実行される。 (Exit イベント プロシージャの中で) TextBox1.SetFocues する。 Exit イベント プロシージャの End Sub を抜ける。 ユーザーが指定した先のコントロールにフォーカスが移る。 ほら、正しい動作でしょ。 フォーカスが抜ける直前に実行されるイベントの中で SetFocus しても、イベントを抜けたら強制的にフォーカスは移動する。 で、Exit イベント プロシージャの引数にある "Cancel" を使って強制的にフォーカスが映るのをキャンセルするわけ。 TextBox1.SetFocus の代わりに Cancel = True としてみ。
お礼
ありがとうございました。 cancel=trueってはじめて知りましたけど、応用範囲が広そうですね。exitという動作をcancelするって、素晴らしいです。 助かりました。