Вы можете попробовать разбить на DateSerial
:
Sub Test()
Dim r As Range
Set r = Sheet1.Range("B10")
r = DateSerial(Split(r, ".")(2), Split(r, ".")(1), Split(r, ".")(0))
r.NumberFormat = "dd/mm/yyyy"
End Sub
Split возвращает начинающийся с нуля одномерный массив, содержащий указанное количество подстрок. .
Что это означает на простом английском, так это то, что он берет текстовую строку 03.07.18
и разбивает ее на три части, используя .
.
Таким образом, вы получите 03
, 07
и 18
в массиве.
Это может быть легче читать как:
v = Split(r, ".")
r = DateSerial(v(2), v(1), v(0))
DateSerial
принимает три числа (год, месяц и день) и возвращает дату. Три части Сплита передаются в это, чтобы создать дату.
Для обработки на нескольких ячейках используйте:
Sub formatfixer()
Dim r As Range
For Each r In Range("H5:H120")
r = DateSerial(Split(r, ".")(2), Split(r, ".")(1), Split(r, ".")(0))
r.NumberFormat = "dd/mm/yyyy"
Next r
End Sub