目次
経緯
日々の業務で、「B列に値を入力したタイミングで、A列にその日の日付を自動的に記録したい」と思う場面がありました。
作業日や入力日を管理したいときに便利だと考え、今回はVBAの自動記録処理を学習しました。
実現したいこと
- B列に何か入力されたら
- 対応するA列のセルに本日の日付(
Date
)を自動入力する
使用するVBAコード
このような処理は、Worksheet_Change
イベントを使うことで実現できます。
以下のコードを、**対象のシートのコードウィンドウ(例:Sheet1)**に貼り付けてください。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
Set rng = Intersect(Target, Me.Range("B:B")) ' B列の変更に限定
If rng Is Nothing Then Exit Sub
Application.EnableEvents = False ' 無限ループ防止
Dim cell As Range
For Each cell In rng
If cell.Value <> "" Then
cell.Offset(0, -1).Value = Date ' A列に日付を入力
End If
Next cell
Application.EnableEvents = True
End Sub
補足:このコードの動作仕様
- 対象はB列のみ
- B列に値が入力されると、同じ行のA列に「今日の日付(
Date
関数)」が入力されます - 空白を入力しただけではA列に変化はありません
Application.EnableEvents = False
によってイベントの再帰呼び出しを防止しています(これを省略すると無限ループの可能性があります)
応用例
- 日報記録やデータ入力履歴の自動管理
- 入力作業のタイムスタンプ代わりに
- 「削除された場合は日付も消す」などの処理は、別途
If cell.Value = "" Then
条件で対応可能です
まとめ
今回のVBAコードを使用すれば、B列にデータを入力したタイミングで、A列にその日付を自動記録することが可能になります。
毎回手動で日付を入力する必要がなくなるため、作業の効率化や記録ミスの防止にもつながります。
最後までお読みいただきありがとうございました。