 Home
Home  フォーム
フォーム| 
フォームの最後のコントロールでEnterキーかTabキーを押すと、自動的に次のレコードへ移動します。 | 
商品入力フォームです。
このフォームの最後のコントロールの「単位」でEnterキーかTabキーを押します。

すると次のレコードに移動してしまいます。
次々と入力するする場合は便利ですが、例えばレコードが1件しかないテーブルなどでは、新規レコード入力画面になってしまいバグの原因になる可能性があります。
そこで、EnterキーとTabキーが押された場合、別の処理を行うVBAを作成します。

フォームをデザインビューで開き、最後のコントロールを選択します。

キークリック時のイベントプロシージャは、KeyDown(KeyCode As Integer, Shift As Integer)になります。
KeyCodeには、押されたキーのコードが入っています。
Shiftには、ShiftキーとCtrlキーの状態が入っています。
EnterキーとTabキーを無視するVBAです。

Private Sub 単位_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyReturn Or KeyCode = vbKeyTab Then
        KeyCode = 0
    End If
End Sub
最初のコントロールの商品IDに移動するようにしたVBAです。

・SetFocusで指定したコントロールに移動できます。
Private Sub 単位_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyReturn Or KeyCode = vbKeyTab Then
        Me!商品ID.SetFocus
    End If
End Sub
 Home
Home  フォーム
フォーム