0

Пример кода ниже работает отлично, если окна находятся в USFormat (decimal = point), но прерывается при запуске в голландском формате (decimal = comma).Записать формулу на ячейку не принимает разделитель sys decimal/Reginal Format/Excel VBA

Почему?

Есть ли способ записать формулу в ячейку в формате с запятой, которая не требует замены каждой запятой на точку?

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

USFormat

выход DutchFormat

CommaDecimalFormatOutput

ответ

1

Вы пытаетесь установить формулу ячейки, используя свойство по умолчанию Range возвращенное .Cells(4, 2) , который составляет .Value. Чтобы установить ячейку в формулу с использованием текущего языкового стандарта системы, вместо этого вам необходимо использовать свойство FormulaLocal.

Это должно работать:

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