SSブログ

VBA フォーカスを移動する [VBA]

 フォーカスは、現在操作対象となっているコントロールを示します。
 例えば、画面上にテキストボックスAと、テキストボックスBの、2つのテキストボックスが配置されているとします。
 テキストボックスAにフォーカスがある場合、キーボードから入力を行うと、その内容はテキストボックスAに入力されます。
 この時、テキストボックスBへ入力を行いたい場合は、フォーカスをテキストボックスBに移動させます。

 フォーカスを移動させるには、通常のユーザの操作では、目的のコントロールをマウスでクリックする、タブキーを押下する、などがあります。

 これをVBから行うには、SetFocusメソッドを使用します。
 テキストボックスA(txtA)にフォーカスを移動する場合は、

Me.txtA.SetFocus

 と、します。

 コントロールのメソッドなので、対象となるコントロールにSetFocusメソッドがある場合のみ使用可能です。
 入力系のコントロールであれば、テキストボックス(TextBox)、コンボボックス(ComboBox)、リストボックス(ListBox)、チェックボックス(CheckBox)などです。

 フォーカスを移動させようとしているコントロールが、フォーカスを受け取れない状態の場合は、エラーになります。
 Enabled(使用可能)プロパティがFalseの時などです。

 複数のフォームを開いた状態で、目的のフォームに切り替える場合は、

Forms("FormA").SetFocus

 と、します。
 別のフォームのコントロールに対してSetFocusを行っても、フォームは切り替わりません。
 例えば、
Forms("FormA").txtB.SetFocus
 としても、フォームは現在のフォームのままになります。
 この後、
Forms("FormA").SetFocus
 とすると、
 フォームAのtxtBにフォーカスがある状態で、フォームAに切り替わります。

 同様に DoCmd.GoToControlでも、フォーカスを移動させることができます。

DoCmd.GoToControl "txtA"

 と、することで、txtAにフォーカスが移動します。

 SetFocusメソッド、DoCmdともに動作は同じですが、SetFocusメソッドが推奨です。


nice!(1)  コメント(0)  トラックバック(0) 

nice! 1

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。
※URL(リンク)は記述できません。

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。