2013-06-13 5 views
0

Я пытаюсь распечатать разные форматы даты на моем листе Exel с помощью VBA. Однако я не могу представить формат «yyyy-mm-dd» или форматы «mmm dd, yyyy». Кажется, что ячейки не распечатывают правильные форматы. Например:Неверный формат даты VBA в ячейке Excel

'Declare new date variables 
Dim LongDateFmt As String 
Dim ShortDateFmt As String 
Dim MediumDateFmt As String 
Dim NewDateFmt As String 
'Change the date to the new submission date 
    MediumDateFmt = Format(Date, "yyyy-mm-dd") 
    Range("A1").Value = MediumDateFmt 
    LongDateFmt = Format(Date, "Long Date") 
    Range("A2").Value = LongDateFmt 
    ShortDateFmt = Format(Date, "Short Date") 
    Range("A3").Value = ShortDateFmt 
    NewDateFmt = Format(Date, "MMMM dd, yyyy") 
    Range("A4").Value = NewDateFmt 

A1 печатает 13/06/2013, A2 печатает 13-Июн-13, A3 печатает 13/06/2013 и А4 печатает 13-Jun-13, а также.

Это проблема с настройками или мой код неправильный?

+0

код работает, если клетки устанавливаются в 'формате Text', в противном случае он возвращает результаты, о которых вы сообщали. Значения 'MediumDateFmt' и т. Д. Корректно задаются в коде. –

ответ

4

вы должны изменить формат ячейки, а не использовать отформатированные строки

with Range("A1") 
    .Value = Date 
    .Numberformat = "yyyy-mm-dd" 
end with 

, например

2

Format не устанавливает формат ячейки на то, что вы хотите, это просто дает вам строку указанного формата. Вставка этой строки в ячейку не обязательно даст вам нужные вам результаты, поскольку текущее форматирование ячейки может оказать влияние.

Если вы хотите изменить форматирование самой клетки, вам нужно установить его свойство NumberFormat, что-то вроде:

Range("A1").NumberFormat = "yyyy-mm-dd" 
Смежные вопросы