Event to add a date if "X" is entered in a cell

  • Thread starter Thread starter JOSEPH WEBER
  • Start date Start date
J

JOSEPH WEBER

How do I modify this code to put a date in only if a capital x exists in the
adjacent cell?



Private Sub Worksheet_Change(ByVal Target As Excel.Range)
With Target
If .Count > 1 Then Exit Sub
If Not Intersect(Range("c2:c50000"), .Cells) Is Nothing Then
Application.EnableEvents = False
If IsEmpty(.Value) Then
.Offset(0, 1).ClearContents
Else
With .Offset(0, 1)
.NumberFormat = "mm/dd/yyyy"
.Value = Date
End With
End If
Application.EnableEvents = True
End If
End With
End Sub
 
Hi,

Try this

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
With Target
If .Count > 1 Then Exit Sub
If Not Intersect(Range("c2:c50000"), .Cells) Is Nothing Then
Application.EnableEvents = False
If IsEmpty(.Value) Then
.Offset(0, 1).ClearContents
Else
If UCase(.Value) = "X" Then
With .Offset(0, 1)
.NumberFormat = "mm/dd/yyyy"
.Value = Date
End With
End If
End If
Application.EnableEvents = True
End If
End With
End Sub

Mike
 
I misunderstood your requirement, try this instead

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
With Target
If .Count > 1 Then Exit Sub
If Not Intersect(Range("c2:c50000"), .Cells) Is Nothing Then
Application.EnableEvents = False
If IsEmpty(.Value) Then
.Offset(0, 1).ClearContents
Else
If .Value = "X" Then
With .Offset(0, 1)
.NumberFormat = "mm/dd/yyyy"
.Value = Date
End With
End If
End If
Application.EnableEvents = True
End If
End With
End Sub

Mike
 
if you're not too worried about row number then

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
if Target.Column = 3 and Target="X" then
target.offset(,1).Resize(1,1)=Date
End Sub

....is nice and simple

you might want to include a .Count check like Mike did, if there's a
possibility of multiple cell entry
 
Back
Top