Независимо от того, что вы вводите в ячейку, если это строка, которая выглядит как дата (+/- время), Excel попытается преобразовать ее в дату, используя ваш формат по умолчанию (и в случае неудачи значение останется как- поступил).
Нет ничего непонятного 27.03.2020, так как нет 27-го месяца, но 01.04.2020 может быть либо 1 апреля, либо 4 января. Какая из этих дат будет в конце, будет зависеть от того, какой у вас формат даты по умолчанию: мм / дд / гггг или дд / мм / гггг.
Как говорит @BigBen, вы должны использовать фактическую дату (не передавайте дату в Format
перед добавлением ее на лист) и отформатируйте ячейку в желаемом формате перед вы вставляете эту дату:
Dim dt, dt2
dt = DateSerial(2020, 1, 4) 'Jan 4 2020
dt2 = DateSerial(2020, 1, 20) 'Jan 20 2020
With ActiveSheet
.Range("A1").NumberFormat = "mm/dd/yyyy"
.Range("A1").Value = dt '>> 01/04/2020
.Range("A2").NumberFormat = "dd/mm/yyyy"
.Range("A2").Value = dt '>> 04/01/2020
.Range("B1").NumberFormat = "mm/dd/yyyy"
.Range("B1").Value = dt2 '>> 01/20/2020
.Range("B2").NumberFormat = "dd/mm/yyyy"
.Range("B2").Value = dt2 '>> 20/01/2020
End With