Я получил ответ: если вы выберете нужный формат, а затем переключитесь на пользовательский, этот диалог покажет вам, какие коды форматирования использовались в Excel. В этом случае фактический формат даты - [$-en-US]d-mmm-yy;@
, а не автоопределение d-mmm-yy
.
. Разница между этими двумя форматами заключается в том, что d-mmm-yy
будет локализован для разных пользовательских локалей, но [$-en-US]d-mmm-yy;@
не будет , Это связано с Engli sh (США). В Windows его можно изменить в зависимости от языкового стандарта пользователя с помощью Win + R -> intl.cpl.
Логика Excel c предназначена для получения числового формата и последующего линейного поиска по всем категориям. видеть, что это существует где угодно. В конечном итоге это будет в Custom для обоих форматов, которые по умолчанию используются в Custom, но также и в том случае, если совпадений не найдено вообще. 1 jan 2020
не относится к категории Дата - формат d-ммм-гг, который не соответствует ни одному формату в категории данных; он соответствует формату в категории «Пользовательский», поэтому он относится к категории «Пользовательский».
Вот простой обходной путь в VBA, добавленный в модуль рабочей книги, новые записи будут иметь ожидаемый формат:
Private Sub Workbook_SheetChange(ByVal Sheet As Object, ByVal Target As Range)
With Sheet
If Target.NumberFormat = "d-mmm-yy" Then
Target.NumberFormat = "[$-en-US]d-mmm-yy;@"
End If
End With
End Sub