マクロを組めば即できるので大した内容ではありませんが、ソースを交えてメモ。
要望の内容
事務系でよくある要望内容ですが、一応まとめておきます。
- 数値入力はテンキー部だけで行いたい
- セルの移動は右方向へ。
ただし、指定する列にきたら次の行の先頭へ移動する - すべての入力が終わったらフォームボタンにフォーカスをあわせる
- 詳細オプションの「Enterキーを押した後にセルを移動する」方向はデフォルト(下)のままにしたい
エンターキーの移動はApplicatoin.MoveAfterReturnを使います!
エンターキーの制御を行う場合、Application.MoveAfterReturnをTrueにすることで今回の要望を実現しています。MoveAfterReturn プロパティ
MoveAfterReturnDirection プロパティ
VBAのソース
1: Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
2:
3: xrArea01 = "B5" '右方向へ行くRange範囲1
4: xrArea02 = "G28" '右方向へ行くRange範囲2
5: xbArea01 = "H5" '下方向へ行くRange範囲1
6: xbArea02 = "H28" '下方向へ行くRange範囲2
7: retCell = "B" '一段下に戻るセル'通常は下移動
8:
9: Application.MoveAfterReturn = True
10: Application.MoveAfterReturnDirection = xlDown
11:
12: 'xx:xxの範囲ではエンターキーを押して右移動
13: If Not Application.Intersect(ActiveCell, Range(xrArea01 & ":" & xrArea02)) Is Nothing Then
14: Application.MoveAfterReturnDirection = xlToRight
15: End If
16:
17: 'xx:xxは一段下のB列に移動
18: If Not Application.Intersect(ActiveCell, Range(xbArea01 & ":" & xbArea02)) Is Nothing Then
19: yy = ActiveCell.Row
20: Range(retCell & (yy + 1)).Select
21: End If
22:
23: End Sub
ブックを閉じるときに注意が必要(みたい)
私の環境だけかもしれませんが、マクロを組んだワークブックを閉じる→他ワークブックを開くとセル移動の設定が「下」ではなく「右」になっていました。
対処法として、ワークブックを閉じる時に実行するマクロ(Workbook_BeforeClose関数)を使いました。
同じ現象になった方は下記マクロを使ってみてくださいね。
1: Private Sub Workbook_BeforeClose(Cancel As Boolean)
2: Application.MoveAfterReturn = True
3: Application.MoveAfterReturnDirection = xlDown
4: End Sub