2013-06-05 13 views
5

Ich möchte das heutige Datum in einem bestimmten Format mit englischen Monatsnamen abrufen.Wie ändere ich das Gebietsschema eines formatierten Datums?

Ich verwende Format(DateValue(Now), "dd-mmm-yyyy"), die mich 05-cze-2013 gibt, die in Polnisch ist. Was ich bekommen möchte ist 05-Jan-2013.

Ich bin nur an einer VBA-Lösung interessiert. Bitte geben Sie auch eine Möglichkeit an, das Gebietsschema auf das Original zurückzusetzen, auch mit VBA.

Antwort

7

Es ist nicht sehr schwierig ...

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 

Ich habe dies erreicht, indem die Aufnahme und ein Makro Modifizieren der Kriterien passen.


Further reading available here

+0

** Mehow **, das ist wirklich beeindruckend. Ich habe diesen Trick noch nie gesehen. Haben Sie einen Link zum Weiterlesen? Ich würde wirklich gerne verstehen, wie du das geschafft hast. – tbur

+0

@tbur ive aufgezeichnet und bearbeitet ein Makro, aber auch ich habe einen nützlichen Link zur Verfügung gestellt, falls Sie tiefer graben wollten –

+1

Wie kann ich das mit einer String-Variable tun? 'Dim myDate als String: myDate = Format (DateValue (Now)," [$ -409] mmmm yyyy ")' funktioniert nicht, der Monat ist immer noch in Englisch (meine Sprache) ... –

0

Es ist nicht sauber VBA, aber es ist eine Möglichkeit, in String lokalisiert formatiert Datum zu erhalten. Etwas, das die Format-Funktion nicht kann.

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

Mehr Infos über lokale Formatierung i große Antwort https://stackoverflow.com/a/899290 von Ian Boyd

Verwandte Themen