エクセルでD列に入力された時刻をもとに、E列に2時間前の時刻を自動計算し、D列が消去された際にE列も消えるVBAコードを解説します。関数を使用せずにVBAで実現する方法について、詳細に説明します。
1. VBAで2時間前の時刻を計算するコード
まず、VBAを使用して、D列に入力された時刻から2時間前の時刻を計算し、E列に表示させる方法を解説します。以下のコードをVBAエディタに入力してください。
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("D:D")) Is Nothing Then
If IsDate(Target.Value) Then
Application.EnableEvents = False
Target.Offset(0, 1).Value = Target.Value - TimeSerial(2, 0, 0)
Application.EnableEvents = True
End If
End If
End Sub
このコードでは、D列に時刻が入力されると、E列にその2時間前の時刻を計算して表示します。`TimeSerial(2, 0, 0)`を使って、2時間を引いています。
2. D列が消去された際にE列も消える設定
次に、D列の内容が消去されると、E列の内容も一緒に消えるように設定します。以下のコードを同じようにVBAエディタに追加します。
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("D:D")) Is Nothing Then
If Target.Value = "" Then
Target.Offset(0, 1).ClearContents
ElseIf IsDate(Target.Value) Then
Application.EnableEvents = False
Target.Offset(0, 1).Value = Target.Value - TimeSerial(2, 0, 0)
Application.EnableEvents = True
End If
End If
End Sub
このコードでは、D列が空白になった場合、E列も自動的に消去されるように`ClearContents`を使用しています。
3. 使用方法と注意点
上記のVBAコードは、D列に時刻を入力するとE列に2時間前の時刻が表示され、D列を消去するとE列も消えるという動作を実現します。このコードは、D列が時刻形式で入力されている場合にのみ動作しますので、入力ミスを防ぐためにD列には時刻形式を設定しておくと良いでしょう。
まとめ
このVBAコードを使用することで、D列に時刻を入力した際にE列に自動的に2時間前の時刻を表示し、D列が消去されるとE列も消える動作を簡単に実現できます。関数を使わずにVBAを使ってこのような自動化をすることで、エクセル作業が効率化されます。


コメント