Office-Fragen.de

Normale Version: LanguageSettings.LanguageID
Sie sehen gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hi Zusammen,
Ich hab ein Makro das aus einer Exceltabelle Etiketten in Word erstellt. Nun habe ich das Problem wenn jemand der ein Englischens Office hat, die Zahlenformation auch anderes gemacht werden muss. Ich hab mich nun soweit eingelesen das ich über
Code:
Application.LanguageSettings.LanguageID()

an die Info komme ob eine andere Spracheinstellung verwendet wird. Nun muss man in der Klammer msoLanguageIDExeMode, msoLanguageIDUI, msoLanguageIDInstall, msoLanguageIDHelp oder msoLanguageIDUIPrevious mitgeben. msoLanguageIDInstall, msoLanguageIDHelp und msoLanguageIDUIPrevious habe ich zur Löusung meines Problem (allein schon wegen den Namen) ausgeschlossen. Also bleiben noch msoLanguageIDExeMode, msoLanguageIDUI. Ich hab jetzt ein User bei dem mit
Code:
MsgBox Application.LanguageSettings.LanguageID(msoLanguageIDExeMode)

1038 (ungarn) und mit msoLanguageIDUI eine 1031 (deutsch) ausgibt.
Gehe ich dann recht der Annahme das msoLanguageIDExeMode bestimmt wie zahle unsw. formatiert sind? Und wenn ja kann ich das per Makro irgendwie auf 1031 stellen (und nach beendigung wieder zurückstellen) oder muss ich dann quasie für jede Sprache sowas machen wie
Code:
IIf(lang=1031, "So-foramtieren", "so Formatieren")

Oder reicht das garnicht aus und ich muss in den Kernel32 schauen?
Ich denk für dieses Prolbem gibt es schon lang mögliche Lösungen, aber mit meinen Suchbegriffen habe ich leider keine gefunden :-(
Hallo,

Die IDs geben Dir nur die Sprache wieder, die in Excel in bestimmten Bereichen verwendet wird, wie bspw. für die Benutzeroberfläche msoLanguageIDUI.
Das hat keine Auswirkungen auf VBA - was nur Englisch spricht. Heißt also, wenn Du eine Formatierung über Code in VBA vornimmst, musst Du Englisch
für das Format verwenden. Beispiel Msgbox Format(date,"DD.MM.YYYY")

Wenn Du Dir jedoch einen Formatstring (z.B. Datum TT.MM.JJ) über VBA aufbauen möchtest, den Du in einer Formel verwenden möchtest, wie bspw.
Range("B1").Formula="=TEXT(A1,""TT.MM.JJJJ"")" kannst Du Bestandteile zur Formatierung über Application.International(...) ermitteln. Da gibt
Dir die aktuell verwendeten Buchstaben bzw. Code zurück, Beispiel: Msgbox Application.International(xlMonthCode) Die Konstanten findest Du
im Objektkatalog unter XlApplicationInternational.

Gruß
Danke maninweb,
ja es geht um den 2. Fall (TT.MM.JJJJ)

Ich werde mit dem
Code:
Msgbox Application.International(xlMonthCode)
mal experimentieren. Sieht aber gut aus.