In order to ease the data entry, I am allowing users to enter the date as "ddmmyyyy" without "/", e.g, "12032017" . After the entry I want to update the target cell with value "dd/mm/yyyy", e.g, "12/03/2017".
At the start the format of the target cell is set to "General" but as soon as the date value is calculated, format of the cell is automatically changed to "dd/m/yyyy".
I have tried to use both the General and date format. Below is the VBA code
If Not Intersect(Target, Range("D11:D510")) Is Nothing Then
If Not (Target.Value = "") Then
Application.EnableEvents = False ' very important
Target.Value = Left(Target.Value, 2) & "/" & Mid(Target.Value, 3, 2) &
"/" & Right(Target.Value, 4)
Application.EnableEvents = True 'very important
End If
End If
You are still returning a string that looks like a date and not an actual date, Use DateSerial:
If Not Intersect(Target, Range("D11:D510")) Is Nothing Then
Target.NumberFormat = "@"
If Not (Target.Value = "") Then
Application.EnableEvents = False ' very important
Target.Value = DateSerial(Right(Target.Value, 4), Mid(Target.Value, 3, 2), Left(Target.Value, 2))
Target.NumberFormat = "dd/mm/yyyy"
Application.EnableEvents = True 'very important
End If
End If