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

3791
Malcolm Morris

Excel 2007

Я хочу, чтобы макрос поместил сегодняшнюю дату в текущую ячейку в формате dd-mmm-yy, например, 30-Oct-14.

Код у меня прост:

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

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

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

дд-мм-гг дает 30-10-14,
дд-ммм ~ гг дает 30 ~ окт ~ 14

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

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

0
См. Https://stackoverflow.com/questions/19781234/how-to-concatenate-datemm-dd-yyyy-with-time-hhmmss-using-vba/19784256#19784256 rakslice 10 лет назад 0

1 ответ на вопрос

1
Andrew Cave

Excel is automatically converting that text you inputting with the macro into a date (and then applying a date format. To force excel to view it as text, prepend a single quote to the date string:

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

Alternatively, set the format of the cell to text type first:

ActiveCell.NumberFormat = "@" ActiveCell.Value = Format(Now(), "dd-mmm-yy") 
Благодарю. Оба варианта отображаются корректно, хотя мне нужен второй, без одинарных кавычек. Я бы поставил / оценил как решенный, если бы у меня была репутация ... Malcolm Morris 10 лет назад 0