Ländereinstellung in Excel & VBA > das leidige Punkt, Komma Problem

Regionale Einstellung

Regionale Einstellung

Zunächst: Vielen Dank gilt meinem Arbeitskollegen und Freund Bernhard Liebenhoff, der nach mühseliger Arbeit mit der Problemsuche und Problemlösung, mir diese Information dieser Funktion zur Verfügung gestellt hat.

Hin und wieder wird man mit dem Punkt, Komma Problem und der Ländereinstellung in Microsoft Windows und Microsoft Office konfrontiert.

Im folgenden Beispiel trat der Fehler mit einem englischen Windows XP und Windows 7 mit  deutschem Sprachpaket, Regions- und Sprachoption in der unter Regionale Einstellung > Deutsch > Anpassen > als Dezimaltrennzeichen Punkt eingestellt wurde.

Normalerweise ist in der deutschen Einstellung an dieser Stelle ein Komma als Dezimaltrennzeichen definiet.

Wird aber auf diesem „deutschem“ System mit englischer Software gearbeitet und dann noch mit dem Nummerblock,  stellt man das Komma auf der Tastatur als Punkt ein.

Denn im englischen werden bekannterweise Dezimalzahlen mit Punkt statt mit Komma geschrieben.

Wenn man jetzt eine VBA Applikation erstellt die mit Dezimalzahlen arbeitet und diese Applikation auch auf anderen Rechnern nutzen möchte, bei der das Komma nicht als Punkt für die Tastatur eingestellt wurde, trifft man auf ein folgend schweres Problem.

Regionale Einstellung anpassen > Dezimaltrennzeichen

Regionale Einstellung anpassen > Dezimaltrennzeichen

Wenn in einer Userform eine Deziamlzahl in deutscher Schreibweise eingegeben wird, wird mit dieser Zahl nicht korrekt gerechnet, da VBA im Hintergrund diese Zahl nicht als Dezimalzahl, sondern als „Tausender Zahl“ erkennt. Denn im englischen gilt ein Komma als Tausender-Trennzeichen.

Nun könnte ganz einfach auf die Replace Funktion unter VBA zurückgegriffen werden, die das Komma durch einen Punkt ersetzt. Das funktioniert aber nur dann, wenn man eine Komma als Dezimaltrennzeichen unter den regionalen Einstellungen definiert hat. Wenn man das Trennzeichen in der Region Deutsch als Punkt definiert hat, kommt die Replace Funktion damit nicht zurecht.

Um nun schlußendlich herauszufinden, welches Trennzeichen auf dem jeweiligen PC eingestellt ist, kann man sich mit der Funktion


Application.International(xlDecimalSeparator)

Abhilfe schaffen.

Diese Funktion ließt die atkuelle Einstellung aus,  mit der man dann weiter arbeiten kann:


If  Application.International(xlDecimalSeparator) = "." Then
     Userform.Controls("TextBox" & 1).Value =  Replace(Userform.Controls("TextBox" & 1).Value, ",", ".")
End If

Vorheriger Beitrag

Excel VBA Userform zentrieren oder im Fullscreen

Nächster Beitrag

Im Honeycomb Android 3.0 Browser die mobile Ansicht deaktivieren

  1. christian

    Hallo,

    Folgendes Problem habe ich mit Excel und VBA.
    Vielleich kannst Du mir dabei helfen.

    ich entnehme aus einer Zelle folgende Formel 2,5*3 und setzte in der Nachbarzelle vor die Formel ein „=“ Zeichen davor und lasse die Formel ausrechnen.
    jedoch geht das nur mit ganzen Zahlen oder mit Punkt als Trennzeichen.
    Wenn ein Punkt verwendet wird kommt aber ein Komma zurück bei der Ausgabe.

    Ich werde hier noch Wahnsinnig, denn das Problem haben viele jedoch nutzen mir die Lösungen leider nichts.

    Das ganze wird verwendet um dem Kunden die Rechenformel aufzuzeigen und dahinter das Ergebnis auszurechnen ohnen nochmals die Formel mit „=“ davor einzugeben. Daher möchte ich gern mit einem Makro das ganze automatisieren.

    Ich bin kein toller Programmierer und schon gar nicht mit VBA.
    Hier Mein Code den ich dabei verwende:

    If ActiveCell.Row 1 Then
    ActiveCell.Offset(-0, 1) = Evaluate(„=“ & ActiveCell.Offset(-0, 0))
    End If

    Ich danke schon im vorraus für die Hilfe!!!

    mfg
    Christian

Schreibe einen Kommentar

Präsentiert von WordPress & Theme erstellt von Anders Norén