Формат Excel VBA (‹Date›, ммммм-гг) не работает должным образом

В моем листе Excel есть ячейки, содержащие дату.

Формат отображения для этих ячеек - пользовательский формат «ммммм-гг», поэтому дата «01.07.16» отображается как «S-16». Этот рабочий формат работает на листе Excel, однако в VBA я пытаюсь вызвать функцию Format () для этих ячеек, она не дает того же формата.

Format( <Date_Cell> , "mmmmm-yy")

Дает

"April4-16"

на графике, например.

Почему функция Format не работает так же, как форматирование ячейки даты?

Изменить: согласно веб-сайту поддержки офиса, Отформатируйте дату так, как вы хотите, я использую правильный формат, но он не дает того результата, который, по утверждениям веб-сайта, должен быть.

Edit2: Оказывается, форматирование даты ячейки работает иначе, чем функция формата VBA, как указывает выбранный ответ.


person M. Evers    schedule 30.09.2016    source источник
comment
У вас слишком много m в части месяца, используйте только 4.   -  person Scott Craner    schedule 30.09.2016
comment
Нет, это дает полное название месяца июнь-16 против J-16. Согласно веб-сайту поддержки офиса, 5 правильно Отформатируйте дату по своему усмотрению   -  person M. Evers    schedule 30.09.2016


Ответы (3)


Значение символов формата функции VBA Format и Формат даты Excel не идентичны на 100%.

Вы можете использовать функцию рабочего листа TEXT, например:

Application.Text( <Date_Cell> , "mmmmm-yy")

чтобы добиться того, чего вы хотите.

person Axel Richter    schedule 30.09.2016

Функция VBA Format не поддерживает формат «ммммм» в качестве первой буквы месяца (см. документация для поддерживаемых форматов). Ваш вывод фактически анализируется как «мммм» (название месяца), затем «м» (номер месяца). Если вам нужна только первая буква месяца, вам нужно будет разобрать ее вручную:

Left$(MonthName(Month(<Date_Cell>)), 1) & "-" & Right$(CStr(Year(<Date_Cell>)), 2)
person Comintern    schedule 30.09.2016

Еще один вариант:

Измените числовой формат ячейки:

Range("A1").NumberFormat = "mmmmm-yy"
person Scott Craner    schedule 30.09.2016