2016-08-04 36 views
0

Der folgende Beispielcode funktioniert einwandfrei, wenn Windows in USFormat (Dezimal = Punkt) aber bricht, wenn in niederländischem Format (Dezimal = Komma) ausgeführt wurde.Write Formel zu Zelle akzeptiert nicht sys Dezimaltrennzeichen/Reginal Format/Excel VBA

Warum?

Gibt es eine Möglichkeit, die Formel in eine Zelle im Komma-Dezimal-Format zu schreiben, die nicht erfordert, jedes Komma zurück zu Punkt zu ersetzen?

Sub TestHandleRegionalFormat() 

    SourceData = "-.1" 

    Application.UseSystemSeparators = True 
    ActiveSheet.Cells(1, 2) = GetDecimalSeparator 
    ActiveSheet.Cells(2, 2) = Application.DecimalSeparator 

    If GetDecimalSeparator = "," Then SourceData = Replace(SourceData, ".", ",") 

    ActiveSheet.Cells(3, 2) = SourceData + 1000 

    ActiveSheet.Cells(4, 2) = "=" & SourceData & "+1000" 

End Sub 
Public Function GetDecimalSeparator() 
    'http://stackoverflow.com/a/32992918/4797660 
    GetDecimalSeparator = Mid(Format(1000, "#,##0.00"), 6, 1) 

End Function 

USFormat Ausgang

USFormat

DutchFormat Ausgang

CommaDecimalFormatOutput

Antwort

1

Sie versuchen, die Formel der Zelle unter Verwendung der Standardeigenschaft des von .Cells(4, 2) zurück Range einstellen , das ist .Value. Um eine Zelle mithilfe des aktuellen Gebietsschema des Systems auf eine Formel festzulegen, müssen Sie stattdessen die FormulaLocal-Eigenschaft verwenden.

Dies sollte funktionieren:

ActiveSheet.Cells(4, 2).FormulaLocal = "=" & SourceData & "+1000"