von Stephan » Sa, 04.02.2006 13:38
Hallo Thomas,
Ich glaube, das funktioniert nicht.
Ja, Du hast Recht - peinlich ...
(Ich hatte mir nur das "Ausprobierverfahren" gemerkt und mußte jetzt erstmal nach einem Code suchen.)
Machen wir Dieses:
Code: Alles auswählen
Sub Datum_formatieren()
Dim Landesspezifisch As New com.sun.star.lang.Locale
oZelle = ThisComponent.Sheets(0).getCellByPosition(4,6)
Landesspezifisch.Language = "en"
Landesspezifisch.Country = "us"
FormatCode = "D. MMMM YYYY"
oNummerformat = ThisComponent.NumberFormats
FormatNummer = oNummerformat.queryKey(FormatCode, Landesspezifisch, True)
If FormatNummer = -1 Then
FormatNummer = oNummerformat.addNew(FormatCode, Landesspezifisch)
End If
oZelle.NumberFormat = FormatNummer
End Sub
Der Controller speichert wohl diesen Code irgendwo als "benutzerdefinierten" Code- unter einer beliebigen Nummer.
Die "5081" ist meiner Meinung nach das 'Äquivalent' zu Deiner "81" in der verlinkten Beispieldatei, ich meine der 81er-Teil ist meiner Meinung nach immer die 'Codierung' für:
D. MMMM YYYY
in der jeweiligen Sprache, also wenn deutsch dann für:
T. MMMM JJJJ
Der Zusatz vor der "81" (also hier 50) ist die 'eingestellte' Sprache im obenstehenden Sinne also englisch(USA) (en + us) und ist der Zusatz nicht da ist die Einstellung "Standard". Nach kurzem Test würde ich sagen das gilt so generell, also auch für andere Codierungen, das heißt die 'Formatzahl' setzt sich zusammen aus der landesspezifischen Zahl plus die 'Formatzahl' von "Standard" (gemäß Deiner Beispieldatei).
Problem ist allerdings das ich bisher keine Möglichkeit kenne wie ich beispielsweise aus en + us auf 50 schließen kann ohne es auszuprobieren. Komisch ist auch das ich zwar das en und us bei entsprechenden Einstellungen in Absatzvorlagen (CharLocal) mittels .Language bzw. .Country auslesen konnte, das Gleiche mir aber bei Zahlenformaten in Zellen nicht gelingt (IDL-Referenz unter: .../com/sun/star/lang/Locale.html ist meiner Meinung nach der 'Einstieg' dafür)
Gruß
Stephan
Hallo Thomas,
Ich glaube, das funktioniert nicht.
Ja, Du hast Recht - peinlich ... :oops:
(Ich hatte mir nur das "Ausprobierverfahren" gemerkt und mußte jetzt erstmal nach einem Code suchen.)
Machen wir Dieses:
[code]Sub Datum_formatieren()
Dim Landesspezifisch As New com.sun.star.lang.Locale
oZelle = ThisComponent.Sheets(0).getCellByPosition(4,6)
Landesspezifisch.Language = "en"
Landesspezifisch.Country = "us"
FormatCode = "D. MMMM YYYY"
oNummerformat = ThisComponent.NumberFormats
FormatNummer = oNummerformat.queryKey(FormatCode, Landesspezifisch, True)
If FormatNummer = -1 Then
FormatNummer = oNummerformat.addNew(FormatCode, Landesspezifisch)
End If
oZelle.NumberFormat = FormatNummer
End Sub[/code]
[quote]Der Controller speichert wohl diesen Code irgendwo als "benutzerdefinierten" Code- unter einer beliebigen Nummer. [/quote]
Die "5081" ist meiner Meinung nach das 'Äquivalent' zu Deiner "81" in der verlinkten Beispieldatei, ich meine der 81er-Teil ist meiner Meinung nach immer die 'Codierung' für:
D. MMMM YYYY
in der jeweiligen Sprache, also wenn deutsch dann für:
T. MMMM JJJJ
Der Zusatz vor der "81" (also hier 50) ist die 'eingestellte' Sprache im obenstehenden Sinne also englisch(USA) (en + us) und ist der Zusatz nicht da ist die Einstellung "Standard". Nach kurzem Test würde ich sagen das gilt so generell, also auch für andere Codierungen, das heißt die 'Formatzahl' setzt sich zusammen aus der landesspezifischen Zahl plus die 'Formatzahl' von "Standard" (gemäß Deiner Beispieldatei).
[i]Problem ist allerdings das ich bisher keine Möglichkeit kenne wie ich beispielsweise aus en + us auf 50 schließen kann ohne es auszuprobieren. Komisch ist auch das ich zwar das en und us bei entsprechenden Einstellungen in Absatzvorlagen (CharLocal) mittels .Language bzw. .Country auslesen konnte, das Gleiche mir aber bei Zahlenformaten in Zellen nicht gelingt (IDL-Referenz unter: .../com/sun/star/lang/Locale.html ist meiner Meinung nach der 'Einstieg' dafür)[/i]
Gruß
Stephan