2013-06-05 14 views
5

Chcę pobrać dzisiejszą datę w określonym formacie z angielską nazwą miesiąca.Jak zmienić ustawienia narodowe sformatowanej daty?

Używam Format(DateValue(Now), "dd-mmm-yyyy"), który daje mi 05-cze-2013, który jest w języku polskim. To, co chcę uzyskać, to 05-Jan-2013.

Interesuje mnie tylko rozwiązanie VBA. Podaj także sposób przywrócenia ustawień narodowych do oryginału, również przy użyciu języka VBA.

Odpowiedz

7

To nie jest bardzo trudne ...

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 

udało mi się osiągnąć to poprzez rejestrowanie i modyfikowanie makra, aby dopasować kryteria.


Further reading available here

+0

** Mehow **, to naprawdę imponujące. Jeszcze nie widziałem tej sztuczki. Czy masz link do dalszego czytania? Naprawdę chciałbym zrozumieć, w jaki sposób to osiągnąłeś. – tbur

+0

@tbur ive nagrałem i edytowałem makro, ale także podałem użyteczny link na wypadek, gdybyś chciał zagłębić się w głębiej –

+1

Jak mogę to zrobić ze zmienną String? 'Dim myDate As String: myDate = Format (DateValue (Now)," [$ -409] mmmm yyyy ")' nie działa, miesiąc jest nadal w języku angielskim (mój język OS) ... –

0

To nie jest czyste VBA, ale jest to sposób, aby uzyskać zlokalizowane sformatowaną datę w ciąg. Coś, czego funkcja Format nie może zrobić.

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

Więcej informacji na temat formatowania i świetnie zlokalizowanej odpowiedzi https://stackoverflow.com/a/899290 Ian Boyd