都道府県穴埋めゲーム

テーブル【T-1】
フィールドA,主キー,数値型
フィールドB,テキスト型
フィールドC,テキスト型
フィールドD,テキスト型
フィールドE,テキスト型


フォーム【F-1】
テーブル【T-1】に入力用のフォーム,単票型

があります。


F-1でそれぞれのフィールドに対して入力スペースがあり(もちろんですが)
A,B,C,D,Eと順番に入力していきます。
ここでエンターキーを押すと、次のレコードへ移るわけですが、
カーソルがEの位置にあるため、わざわざマウスでAの位置へ移動させないといけません。
同様に、入力項目がなく、A,B,Cと入力して次のレコードへ行くと、Cの位置にカーソルがあります。

これを、Aをホームポジションとして、次のレコードへ移ったときに
自動的にカーソルをAの位置にもってくるようにしたいのですが、
一体どうすればよろしいでしょうか?

A 回答 (5件)

皆さんのご意見で正しいと思いますが、


エンターキーで次のレコードにいどうするより
登録ボタンをこしらえてそれで登録するようにされたら如何でしょうか?
このため、フォームのプロパティのtabキー移動を
カレント レコードに変更すればエンターキーでも
次のレコードには移動しなくなります。
色々入力チェックをかけて、然る後に登録でどうでしょ^^;
    • good
    • 0
この回答へのお礼

貴重なご意見をありがとうございました。

エンターを押したときに、A~Dは既定
Eはフィールドに行を追加という設定になっていました。
なので、今回はたまたま?ですが、
A~Dについてはエンターで、
EにカーソルがきたらTABでおくることによって、
次のレコードに移ったときには、
Aにカーソルがくるようになりました。

何分まだアクセス初心者のため、
いろいろと作りこむことが出来ません。
膨大なデータを先に入力し終わることを優先させたいため、
今回、みなさんに教えていただいた方法は、
後日、ひとつづつゆっくりと勉強していきたいと思います。
どうもありがとうございました。(^o^)

お礼日時:2005/05/25 13:19

まず、操作性を良くするため、フォームの「タブオーダ」をフィールドA,B,C,D,Eの


順で、"E"を最終に設定します。

フォームのプロパティの「イベント」タブで、「レコード移動時」をポイントして、
右端に表示された ... をクリックし、「コードビルダ」を指定します。

表示されたコードウィンドウに

Private Sub Form_Current()
Me.フィールドA.SetFocus
End Sub

となるようにコードを設定します。(「フィールドA」というフィールド名のとき)

これで、Eを入力して<Enter>を押したときも、途中でレコードセレクタ等で次の
レコードに移動したときも、「フィールドA」がアクティブになると思います。
    • good
    • 0
この回答へのお礼

貴重なご意見をありがとうございました。

エンターを押したときに、A~Dは既定
Eはフィールドに行を追加という設定になっていました。
なので、今回はたまたま?ですが、
A~Dについてはエンターで、
EにカーソルがきたらTABでおくることによって、
次のレコードに移ったときには、
Aにカーソルがくるようになりました。

何分まだアクセス初心者のため、
いろいろと作りこむことが出来ません。
膨大なデータを先に入力し終わることを優先させたいため、
今回、みなさんに教えていただいた方法は、
後日、ひとつづつゆっくりと勉強していきたいと思います。
どうもありがとうございました。(^o^)

お礼日時:2005/05/25 13:23

フォームに更新というコマンドボタンをつくります。


A,B,C,D,E,更新と順番にタブオーダーをします。
一旦保存
マクロの新規作成で
コマンドの実行→更新
コマンドの実行→最後のレコードへ
というマクロを作り、更新という名前で保存します。
先のフォームを開き更新のボタンのプロパティで、
イベントのクリック時のところにマクロの更新で登録します。
これで、Enterで進んで、更新のところでEnterをすると
更新されAのところから始まります。
こんなもんかな。
独学なもんで自信はありません。
    • good
    • 0
この回答へのお礼

貴重なご意見をありがとうございました。

エンターを押したときに、A~Dは既定
Eはフィールドに行を追加という設定になっていました。
なので、今回はたまたま?ですが、
A~Dについてはエンターで、
EにカーソルがきたらTABでおくることによって、
次のレコードに移ったときには、
Aにカーソルがくるようになりました。

何分まだアクセス初心者のため、
いろいろと作りこむことが出来ません。
膨大なデータを先に入力し終わることを優先させたいため、
今回、みなさんに教えていただいた方法は、
後日、ひとつづつゆっくりと勉強していきたいと思います。
どうもありがとうございました。(^o^)

お礼日時:2005/05/25 13:25

通常、[E]の位置にカーソルがあってEnterキーを押すと、自動的に[A]の位置に移動します。


これは、「タブの移動順」や「タブストップ」の有効/無効が定義されているからです。

しかし、[C]までしか入力せずに移動ボタン等で次レコードへ移動した場合には、下記の設定をしてください。

「レコード移動時」のイベントに「A」のフィールドにフォーカスを移動するように記述。

[A].SetFocus
    • good
    • 0
この回答へのお礼

貴重なご意見をありがとうございました。

エンターを押したときに、A~Dは既定
Eはフィールドに行を追加という設定になっていました。
なので、今回はたまたま?ですが、
A~Dについてはエンターで、
EにカーソルがきたらTABでおくることによって、
次のレコードに移ったときには、
Aにカーソルがくるようになりました。

何分まだアクセス初心者のため、
いろいろと作りこむことが出来ません。
膨大なデータを先に入力し終わることを優先させたいため、
今回、みなさんに教えていただいた方法は、
後日、ひとつづつゆっくりと勉強していきたいと思います。
どうもありがとうございました。(^o^)

お礼日時:2005/05/25 13:32

Enterする事により入力されますね。


その時フォームを消して
再度フォームを表示させる
そんなコードをEnterのイベントに書くのです。


次に
フォームのオープンイベントに
Aにフォーカスがくるようにコードで処理する。


こんなのどうだ?
    • good
    • 0
この回答へのお礼

貴重なご意見をありがとうございました。

エンターを押したときに、A~Dは既定
Eはフィールドに行を追加という設定になっていました。
なので、今回はたまたま?ですが、
A~Dについてはエンターで、
EにカーソルがきたらTABでおくることによって、
次のレコードに移ったときには、
Aにカーソルがくるようになりました。

何分まだアクセス初心者のため、
いろいろと作りこむことが出来ません。
膨大なデータを先に入力し終わることを優先させたいため、
今回、みなさんに教えていただいた方法は、
後日、ひとつづつゆっくりと勉強していきたいと思います。
どうもありがとうございました。(^o^)

お礼日時:2005/05/25 13:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!