Формат даты Excel VBA: дефис в качестве разделителя приводит к странному результату подстановки

Формат даты Excel VBA: дефис в качестве разделителя приводит к странному результату подстановки

Эксель 2007.

Мне нужен макрос, который поместит сегодняшнюю дату в текущую ячейку в формате дд-ммм-гг, например, 30-окт-14.

У меня простой код:

'ActiveCell.Value = Format(Now(), "dd-mmm-yy")'

По какой-то причине возвращается «30 октября 14 г.» с пробелами вместо дефисов.

Похожие форматы работают правильно. например

dd-mm-yy дает 30-10-14,
dd~mmm~yy дает 30~Oct~14

Фактическое значение ячейки установлено на "10 30 2014"

Может ли кто-нибудь дать мне простое решение и, если возможно, объяснить, почему это происходит?

решение1

Excel автоматически преобразует текст, введенный вами с помощью макроса, в дату (а затем применяет формат даты). Чтобы заставить Excel просмотреть его как текст, добавьте одинарную кавычку к строке даты:

ActiveCell.Value = "'" + Format(Now(), "dd-mmm-yy")

Либо сначала установите формат ячейки как текстовый:

ActiveCell.NumberFormat = "@"
ActiveCell.Value = Format(Now(), "dd-mmm-yy")

Связанный контент