Microsoft Access 掲示板

フォーム上でEnterキーを押したときのイベントについて

5 コメント
views
4 フォロー

ACCESSのフォームはデータシートビュー形式です。
F_単価表という名前です。

仕入_11売上_12利益_13
align leftalign rightalign center
10015050
:----::--:
align leftalign rightalign center
仕入 売上 利益とあります。

仕入を入力したときに、同じ列の売上にカーソルが移動するのではなく
その下の仕入にカーソルが移動するように設定したいのです。
オプションのクライアント設定で、変更するとすべての設定が変更されると不便なのです。

Private Sub 仕入_11_KeyUp(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyReturn Then  ' Enterキーが押された場合
        On Error Resume Next       ' エラー防止(最終レコード時など)
        DoCmd.GoToRecord , , acNext  ' 次のレコードに移動
        KeyCode = 0                ' Enterキーの既定動作を無効化
    End If
End Sub

「キーボードイベント取得」プロパティを「はい」に変更してます。

ですが、思い通りの設定にはなりません。

どこを改修すればいいでしょうか?
よろしくお願いいたします。

しん
作成: 2024/11/22 (金) 10:59:02
通報 ...
1
しん 2024/11/22 (金) 11:04:38 f87c1@9fff4

フォームの形は、アップロードしたものです。

2
しん 2024/11/22 (金) 11:05:09 f87c1@9fff4

画像1
フォームの形は、アップロードしたものです。

3

仕入を入力したときに、同じ列の売上にカーソルが移動するのではなく
その下の仕入にカーソルが移動するように設定したいのです。

「仕入」以降のテキストボックス(売上、利益)の「タブストップ」プロパティを「いいえ」にすればどうですか。
ただし、売上、利益 へはキー操作では移動できなくなりますので、マウスクリックする必要があります。

4
hatena 2024/11/22 (金) 13:43:08 修正

ちなみに、Enterキーを入力したときのみ次のレコードへ移動したいということなら、
VBAですることになりますが、イベントはKeyDownではなくKeyUpが適切です。

Private Sub fld1_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyReturn Then  ' Enterキーが押された場合
        On Error Resume Next       ' エラー防止(最終レコード時など)
        DoCmd.GoToRecord , , acNext  ' 次のレコードに移動
        KeyCode = 0                ' Enterキーの既定動作を無効化
    End If
End Sub
5
しん 2024/11/22 (金) 18:01:04 f87c1@9fff4

>>VBAですることになりますが、イベントはKeyDownではなくKeyUpが適切です。

hatena様ありがとうございました