2013-06-05 84 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我记录和编辑了一个宏,但我也提供了一个有用的链接,以防你想更深入地挖掘 – 2013-06-05 15:51:40

+1

如何用String变量来做到这一点? 'Dim myDate As String:myDate = Format(DateValue(Now),“[$ -409] mmmm yyyy”)'不起作用,这个月仍然是英文(我的操作系统语言)... –

0

这不干净的VBA,但它得到本地化的字符串格式的日期的方式。格式函数不能做的事。

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

更多本地化的格式我伟大的答案https://stackoverflow.com/a/899290从伊恩·博伊德信息

相关问题