• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ユーザーフォームのSetFocusが働かない?)

エクセルユーザーフォームでのSetFocusが機能しない問題

このQ&Aのポイント
  • エクセルのユーザーフォームには、textboxとCommandButtonが配置されています。
  • textbox1に入力される数字は10以下に限定されており、それ以上の数字が入力されるとエラーが表示されます。
  • しかし、エラーが発生した場合にtextbox1にフォーカスを戻す際に、textbox2をスキップしてCommandButton1にフォーカスが移ってしまいます。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

よーく考えてみて。 TextBox1 にユーザーが何らか入力する。 ユーザーが何らかの操作で TextBox1 から他のコントロールにフォーカスを移動しようとする。 TextBox1 の Exit イベントが駆動する。 TextBox1_Exit イベント プロシージャが実行される。 (Exit イベント プロシージャの中で) TextBox1.SetFocues する。 Exit イベント プロシージャの End Sub を抜ける。 ユーザーが指定した先のコントロールにフォーカスが移る。 ほら、正しい動作でしょ。 フォーカスが抜ける直前に実行されるイベントの中で SetFocus しても、イベントを抜けたら強制的にフォーカスは移動する。 で、Exit イベント プロシージャの引数にある "Cancel" を使って強制的にフォーカスが映るのをキャンセルするわけ。 TextBox1.SetFocus の代わりに Cancel = True としてみ。

maina-
質問者

お礼

ありがとうございました。 cancel=trueってはじめて知りましたけど、応用範囲が広そうですね。exitという動作をcancelするって、素晴らしいです。 助かりました。

関連するQ&A