2013-06-05 5 views
5

Я хочу получить сегодняшнюю дату в определенном формате с английским именем месяца.Как изменить локаль отформатированной даты?

Я использую Format(DateValue(Now), "dd-mmm-yyyy"), , который дает мне 05-cze-2013, который на польском языке. Я хочу получить 05-Jan-2013.

Меня интересует только решение VBA. Также представьте способ вернуть языковой стандарт к оригиналу, также используя VBA.

ответ

7

Это не очень сложно ...

Sub VBA_Dates_Format() 
    Cells.Clear 
    Range("A1").Value = Now 
    Range("A2").Value = Now 
    ' Polish 
    Range("A1").NumberFormat = "[$-415]d mmm yy;@" 
    ' English UK 
    Range("A2").NumberFormat = "[$-809]d mmm yy;@" 
End Sub 

Я достиг этого путем записи и изменения макроса, чтобы соответствовать критериям.


Further reading available here

+0

** Mehow **, это действительно впечатляет. Я еще не видел этого трюка. У вас есть ссылка для дальнейшего чтения? Я бы очень хотел понять, как вы это сделали. – tbur

+0

@tbur ive записал и отредактировал макрос, но также я предоставил полезную ссылку, если вы захотите копать глубже –

+1

Как это сделать с помощью переменной String? 'Dim myDate As String: myDate = Format (DateValue (Now)," [$ -409] mmmm yyyy ")' не работает, месяц по-прежнему на английском (мой язык ОС) ... –

0

Это не чистый VBA, но это способ получить локализована отформатированную дату в строке. То, что функция Format не может сделать.

With Range("$A$1") 
    .NumberFormat = "[$-809]dd mmmm" 
    .FormulaR1C1 = "=NOW()" 
    tmp = .Text 
    .NumberFormat = "@" 
    .Value = CStr(tmp) 
End With 

Более подробная информация о локализованном форматировании я большой ответ https://stackoverflow.com/a/899290 от Ian Boyd

Смежные вопросы