目次
経緯
Excelでの入力作業の中で、「値を入力したあと、隣の隣(1列飛ばし)に自動でセルを移動したい」という要望を受けました。
これを実現することで、マウス操作なしで素早く連続入力ができ、作業効率が向上します。
そこで、今回VBAを使って入力セルの自動ジャンプを実装しました。
実現したいこと
- たとえばA1に値を入力したあと、自動的にC1にセルが移動する
- 入力作業に集中できるよう、1つ列を飛ばしてフォーカスを移す
使用するVBAコード
以下は、セルに入力があったときに1列飛ばしたセルへ自動で移動するVBAコードです。
対象となるシートのコードウィンドウ(例:Sheet1)に貼り付けてください。
Private Sub Worksheet_Change(ByVal Target As Range)
' 対象がA列(列番号1)だった場合に処理を実行
If Target.Column = 1 Then
Application.EnableEvents = False
' 2列先のセルを選択(= 1列飛ばす)
Cells(Target.Row, Target.Column + 2).Select
Application.EnableEvents = True
End If
End Sub
このコードの動作説明
Worksheet_Change
イベントで、セルに入力があったことを検知しますTarget.Column = 1
によってA列が対象であるかを確認しています(B列なら2
に変更)Target.Column + 2
により、1列飛ばしたセルを自動的に選択Application.EnableEvents = False
によって、イベントが再帰的に発動するのを防いでいます
応用例
- フォーム入力で「名前 → 空欄 → 年齢 → 空欄 → メールアドレス」などのように定型の入力間隔をあけたい場合
- 検査記録やアンケート入力など、1列おきにデータを記入していくフォーマットに活用可能
注意点
- このコードは列番号ベースで制御しているため、列名ではなく数値で指定します(例:A列=1、B列=2)
- 複数セルを一括貼り付けした場合には正しく動作しない可能性があります
Select
を使用しているため、スクロール位置が変化することがあります(必要に応じてActivate
等で調整可能)
まとめ
今回紹介したVBAコードを使えば、セルに入力した直後に自動で1つセルを飛ばして移動する処理が簡単に実装できます。
Excel上での入力効率を高めたい場合に非常に便利です。
業務用フォームやチェックシートの自動化に、ぜひ取り入れてみてください。
最後までお読みいただきありがとうございました。