Option Explicit
Dim i As Integer
Private Sub Worksheet_Change(ByVal Target As Range)
Dim n As Integer
If Intersect(Target, Range("A1,D1")) Is Nothing Then Exit Sub
i = i + 1
n = Target.Column
If (i Mod 2) = 1 Then
If n = 4 Then
Range("A1").ClearContents
ElseIf n = 1 Then
Range("D1").ClearContents
End If
i = 0
ElseIf (i Mod 2) = 0 Then
Exit Sub
End If
End Sub
Option Explicit
Dim i As Byte
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A1,D1")) Is Nothing Then Exit Sub
Dim n As Integer: n = Target.Column
i = i + 1
If (i Mod 2) = 1 Then
i = 0
If n = 4 Then
If IsEmpty(Range("D1")) Then Exit Sub
Range("A1").ClearContents
ElseIf n = 1 Then
If IsEmpty(Range("A1")) Then Exit Sub
Range("D1").ClearContents
End If
ElseIf (i Mod 2) = 0 Then
Exit Sub
End If
End Sub
今回の件では、ごくごく単純に
・A1に何か入力されたら、D1をクリアする
・D1に何か入力されたら、A1をクリアする
をくっつけるだけでいいのではないかと思います。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngA1 As Range
Dim rngD1 As Range
Set rngA1 = Application.Intersect(Target, Me.Range("A1"))
If Not rngA1 Is Nothing Then
If Not IsEmpty(rngA1.Value) Then
Application.EnableEvents = False
Me.Range("D1").ClearContents
Application.EnableEvents = True
End If
End If
Set rngD1 = Application.Intersect(Target, Me.Range("D1"))
If Not rngD1 Is Nothing Then
If Not IsEmpty(rngD1.Value) Then
Application.EnableEvents = False
Me.Range("A1").ClearContents
Application.EnableEvents = True
End If
End If
End Sub