• ベストアンサー

VBAでTabキーを移動させたい

Access上のフォームで、ある結果がテキストボックスに表示されたときのみ、AというコマンドにTabキーを自動的に移動させたいのですが、 1.イベントプロシージャはフォーカス取得後なのか、喪失時なのか 2.VBAはIf文でどうかけばよいのか うまくいかなくて困っています。ご回答お願いします。

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

  • ベストアンサー
  • Tetsuro_M
  • ベストアンサー率19% (4/21)
回答No.1

「Aというコマンド」とはコマンドボタンでしょうか?とりあえずそういうことで進めます。テキストボックスの名前は「txtB」とします。 Bにコントロールがあり、その内容が更新されて求める値「xxx」になった場合に、Aにフォーカスを移動する>Bの更新後のイベントプロシジャーに、 if isnull(me!B) = false then if me!B = "xxx" then me!A.setfocus end if end if でフォーカスが移動しないですか?

ponpon
質問者

補足

どうもありがとうございました.このページが開けず、なかなかお礼が出来ませんでした.すみません。 早速やってみたのですが、なぜか出来ないんです. 私のやりたいことはTetsuroMさんのおっしゃるとりなんですが… 質問する前に"docmd.go to control"でも試してみたんですけど、 どうやら原因は他のところにあるようです。 他のプロシージャも動かなかったりしますので、追求してみます。 これからもよろしくお願いいたします。

その他の回答 (2)

  • Tetsuro_M
  • ベストアンサー率19% (4/21)
回答No.3

先ほどの補足になりますが、自動タブによる移動がセットフォーカスメソッドに優先してしまうので、正しくは「Bの更新後のイベントプロシジャーに」判断するif文を書くのでなく、「B」の次にフォーカスをゲットするフィールドのフォーカス取得時、またはフォーカス取得後のイベントプロシジャーに書いて試して見てください。

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.2

「Aというコマンド」とは「Aというコントロール」のことでしょうか? 「Tabキーを自動的に移動」とは、「フォーカスを移動」のことでしょうか? もしそうでしたら、#1でTetsuro_M さんがお書きのように、SetFocusメソッド を使う、というのが答えになります。実行するタイミングについては、いつでもい いです。 もしこの解釈が違う、あるいは、この説明では分かりにくい、というのであれば、 補足にその旨をお書きください。ponponさんが悩んでおられる状況を具体的に書い ていただけると、より的確な答えが書けるかと思います。

ponpon
質問者

補足

説明不足ですみませんでした. Tetsuro_Mさんの予測どおりです。#1下にも書かせていただきましたが ただ今Access自体を修復中です。ありがとうございました。 これからもよろしくお願いします。

関連するQ&A