• ベストアンサー

Accessのマクロで

Accessのマクロでコントロールの移動のコマンドを実行しようとするのですが、どうもうまくいきません。 時間計算でA~Bの時間をdatediffで計算させ、その答えが負(マイナス)の場合はもう一度Bの時間を聞き直すというものを作る過程で、再入力を促すメッセージのあとBの値にNullを代入して、コントロールの移動でBにフォーカスを移動したいのですが、どうしてもBにフォーカスが移らず、Bの次のタブ順のコントロールにフォーカスが移動してしまいます。どなたかいいアドバイスください。

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

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

「フォーカス喪失時」イベントであれば わざわざフォーカスを移動しなくても マクロで「イベントのキャンセル」を実行すれば テキストボックスへの再入力を促せますよ。 あとは「フォーカス喪失時」ではなく「フォーカス喪失後」イベントにしてみるとか… それでも解決しない場合、 フォーム自体にも何かイベントが使われているかどうか気になるところです。

nkeis
質問者

お礼

「イベントのキャンセル」で解決しました。どうもありがとうございました。 これからもよろしくお願いします。

その他の回答 (1)

回答No.1

あまり関係無いかもしれませんが まず最初に以下を試してみて下さい。 BにNullをセット→Bにフォーカス移動 の順ではなく、 Bにフォーカス移動→BにNullをセット の手順に変更。 それでダメな場合、 とりあえず、コントロールの移動先にBが指定してあるのは間違いではないですよね(^^; それから、マクロ内でコントロールを移動させた後、 他のコントロールに移動させる処理は含まれていませんよね。 一応上にあげた、うっかりミスは無いものとして他の可能性を… まず、コントロールB(テキストボックスですよね?)には 何かイベントが設定されていますでしょうか? たとえば、「フォーカス取得後」等のイベントが設定してある場合は、その内容次第では 次のコントロールにフォーカスが移動してしまう可能性もありますし… あと、移動先のコントロールを他のコントロール(タブ移動順で前後のコントロールとか) に指定してみた場合はどうなりますでしょう? そのあたりを追記願えますでしょうか。

nkeis
質問者

補足

うっかりミスの確認とタブ移動順を変更の確認は済です。ただ、「フォーカス喪失時」でマクロの起動をおこなうようにしています。Bの値が入力された後に非連結のテキストボックスに計算値を代入するようにしているのですが、これがいけないのでしょうか?またそうであれば、どの時点でマクロとつなげばいいのでしょう?

関連するQ&A