I need to change “.” with “/” with a macro in Excel vba, it works, but when I activate the macro it changes the value of the cell from 10.11.2016 to 11/10/2016.
Why does it change the order? The cell doesn’t have any format.
Range("D1").Select
Selection.Replace What:=".", Replacement:="/", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
The cell doesn’t have the format but it is mirroring the format from the regional settings. Check Control Panel | Clock and Region | Region. The moment you replace the text, it becomes a date and then it simply picks up the format from regional settings.
Try this
With Range("D1")
.NumberFormat = "@"
.Value = Replace(.Value, ".", "/")
End With
What I am doing here is converting the format of the cell to text and then replacing the characters.
Great, it works! But can I also replace “.” with “/” in the entire column D with this method without using a loop? If yes how? Thank you – Masca2056 7 mins ago
Try this. I am assuming 10 is the last row.
Sub Sample()
Columns(4).NumberFormat = "@"
[D1:D10] = [INDEX(SUBSTITUTE(D1:D10,".","/"),)]
End Sub
See this LINK for an explanation of using the above method.
Tags: excelexcel, replace, vba