• ベストアンサー
  • 暇なときにでも

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

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

共感・応援の気持ちを伝えよう!

  • 回答数3
  • 閲覧数900
  • ありがとう数2

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

  • ベストアンサー
  • 回答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 でフォーカスが移動しないですか?

共感・感謝の気持ちを伝えよう!

質問者からの補足

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

関連するQ&A

  • Access:タブキーでのフォーカス移動の際、自動でふりがなが入力されません

    Access2003で質問です。 現在、仕事で社員名簿をAccessで作成しています。 フォーム内でテーブル内容を閲覧・編集はできるようになったのですが、 ふりがなの表示がどうも上手くいきません。 マウスでテキストボックス1(氏名)をクリックしてフォーカスを移動させるとテキストボックス2(ふりがな)にはちゃんとふりがなが表示されるのですが、 タブキーでテキストボックス1にフォーカス移動させて入力しても、 テキストボックス2には表示されない状況です。 解決策をご存知の方、ご教授お願いします。

  • クリックイベントは実行されない

    サブフォームのテキストボックスにクリックイベントでVBAを実行するようにしてるのですが クリックしても何も反応がありません。 だけど試しに同じテキストボックスに、フォーカス取得後のGotFocusイベントを[イベント プロシージャ]で選択してみましたが テキストボックスにフォーカスが触れるとイベントが実行されます。 なぜクリックイベントは実行されないのでしょうか? サブフォームは帳票フォームです。それ関係ありますか?

  • Access VBAで

    VBAの超初心者です。 Accessのフォームでコマンドボタンを押すと、決まった文字が入力できるフォームを作りたいと思っています。 クリック時のイベントプロシージャーはどのように記入すればよいのでしょうか。 ど素人な質問ですみません。

その他の回答 (2)

  • 回答No.3

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

共感・感謝の気持ちを伝えよう!

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

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

共感・感謝の気持ちを伝えよう!

質問者からの補足

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

関連するQ&A

  • VBAのフォーム カーソル移動

    VBAのフォームでテキストボックス(1)~テキストボックス(5) まで作ったとします。 カーソルの移動はtabindexの値を順番につければいいのですが、例えばENTERキーとTABキーを両方押したときは カーソルが一つ飛ぶ制御をしたいのですがどうすればいいでしょうか? つまり カーソルがテキストボックス(1)にいる状態でENTERキーとTABキーを同時に押せばカーソルがテキストボックス(3)に移動するようにしたいのですが、お願いします

  • ACCESS VBAで別のプロシージャを呼びだした後

    いつもお世話になります。 ACCESS VBAで、別のプロシージャを呼びだし、 フォームを開き、あるコマンドボタンをクリックすると、 もとに戻ってくるようにしたいのですが、 call で別のプロシージャを呼びだし、フォームを開くところまではうまくいくのですが、コマンドボタンをクリックする前に戻ってきてしまいます。 コマンドボタンにはイベントプロシージャを設定しているのですが、 それではダメなんですよね? どのようなコードになるのでしょうか?よろしくお願いします。

  • タブキー押下時のイベントをひろいたい。

    テキストボックスにフォーカスがあり、TABキーが押された時のイベントをひろいたいのですが、KeyPressもKeyDownもイベントが発生しません。 (If KeyCode = vbKeyTab Then  MsgBox "タブキー" End If  If KeyAscii = vbKeyTab Then ~ のようなコードを記述してもメッセージが表示されない) ヘルプにはKeyDownでは発生しないという記述がありますが、KeyPressではイベントがひろえるようなことが書いてあるのにひろえないので困っています。 なにかよい方法はありませんでしょうか。 わかりにくい説明で申し訳ありませんが困ってます。 宜しくお願いします。

  • Accessイベントプロシージャについて

    前からの疑問なのですが、フォーム上のイベントプロシージャについてお教え下さい."更新前""更新後""フォーカス取得時""フォーカス取得後""フォーカス喪失時""フォーカス喪失後"の違いがいまいち分かりません.今見たら"ダーティ時"というのも…。ループしてしまっているときの対処ですか?ご回答、お願いいたします。

  • VBAでのユーザーフォーム上でのタブオーダーの移動の方法

    やりたい事を以下に書きます。  ユーザーフォームで入力用のTEXTBOXがいくつかあり、TABINDEXが最初のTEXTBOXから順に入力していきます。  1つのTEXTBOXに入力完了後した場合、TABキーまたは、ENTERにより次のTEXTBOXにフォーカスが移動し、最後にコマンドボタンにを押すと入力が完了するというフォームを作っています。  ただし、最初のTEXTBOXに『99』を入力すると、途中のTEXTBOXへのフォーカスの移動はしないで最後のコマンドボタンにフォーカスが移動するようにしたいと考えています。 問題点を以下に書きます。  TEXTBOXの入力完了を現在、「AfterUpdate」イベントでつかまえて、TEXTBOXの値を取得し、その値が『99』だった場合、コマンドボタンにフォーカスを移動するようにコーディングしています。 こんな感じです。(かなり省略していますが、) Private Sub TextBox1_AfterUpdate() If TextBox1.Value = "99" Then CommandButton1.SetFocus Exit Sub End If End Sub この用にコーディングすると、TABINDEXが二つ後ろのTEXTBOXが入力待ち状態となってしまいます。 たとえば TEXTBOXが3つコマンドボタンが1つのフォームだと、 TEXTBOX1に『99』と入力し、上記のコーディングだと一度コマンドボタンにフォーカスが移動したあと、最後にTEXTBOX3にフォーカスが移動して入力待ち状態となる感じです。 色々試しましたが、解決方法が見つかりません。知っている方いましたら、教えてください。

  • Excel VBA VBフォームのタブ移動について

    エクセルVBAなのですが、フォーム内のテキストボックスを入力後EnterやTabキーで移動するかと思うんですけど、この順番を設定する方法ってありますでしょうか? 教えていただければ幸いです。

  • vbaについて。

    お世話になっております。 AccessVBAの初心者です。 subプロシージャのボタンクリックイベントから共通モジュール(Public)の動作を呼び、変数の加減乗除の計算をさせたいです。 共通モジュールの中をif文にする時、if「(subプロシージャの)ボタンが押された」時という記述はどのようにすれば良いでしょうか。 よろしくお願いします。

  • Access フォーム上のタブ移動

    タブ移動について質問します。 フォーム上に検索ボタンがあり、検索ボタンを押すと、イベントプロシージャでデータを取得してきて、フォーム上のテキストボックスに結果を表示する仕組みをつくっています。 この検索ボタンを押した後、あるテキストボックスにタブ移動をしたいのですが、うまくいきません。現在、下記の状態です。 ・検索ボタンを押さずTABキーを押すと、正しくタブ移動する(プロパティのタブ移動順のとおり) ・コード上には「Me!テキストボックス名.SetFocus」を記述 試しに、「Screen.ActiveControl.Name」で確認したところ、移動させたいテキストボックス名が取得できました。また、検索ボタンを押してデータ表示後、別のウインドに切り替え、Accessの画面に戻ると、移動したいテキストボックスにカーソルが存在(点滅)しています。 この事から、タブ移動ができていないのではなく、検索ボタンを押してデータを表示すると、タブが正しく移動しているにもかかわらず、画面上で表示されていないの(点滅していないので入力も、そこからのタブ移動もできません)では?と思います。 「Repaint」などでいろいろ試行錯誤してみたのですが、解決できなかったので、質問をさせて頂きました。 検索ボタンを押した後、正しくタブ移動する方法を教えてください。 環境はAccess2010です。回答をお願い致します。

  • AccessのフォームでVBAの実行時タイミング

    フォームにいくつかテキストボックスがあります。 テキストボックス上でEnterを押して確定したらVBA実行、タブキーでテキストボックスの移動だったら VBAは実行しない、というようにしたいのですが、どのように記入すればいいのでしょうか?

  • access テキストボックスの値取得

    いつもお世話になりますm(_ _)m access VBAをかじり始めた「超・初心者」です(^^;) フォームの画面にテキストボックスを作成し、そこに入力した値を取得したいのですが、どのようにすればよろしいのでしょうか?別に置いたコマンドボタンをクリックすると取得するようにしたいのです。 気軽に、コマンドボタンのイベントプロシージャに、 ----- dim rec as variant rec=textbox1.text   'recは、「テキストボックス1」に入力した値 ----- なんてやってみたんですが、全然ダメで、いろいろ検索してもさっぱり分かりません。 あほくさいほど初歩的な質問で恐縮ですが、なにとぞよろしくお願いいたしますm(_ _)m xp+access2003です。

専門家に質問してみよう