Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
LanguageSettings.LanguageID
#1
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 :-(
Zitieren
#2
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ß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 01/2011 - 06/2019 :: 04/2020 - 06/2022
https://de.excel-translator.de/translator :: Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner (neu)
Zitieren
#3
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.
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste




Hinweis auf Angebot Excel-Inside - lang    Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden um dein Anliegen zu besprechen.
   Gerne erstellen wir auf dieser Basis ein Angebot.
   Sende deine Anfrage einfach
per E-Mail an anfrage@excel-inside.de


Powerd and supported by Excel-InsideSolutions