VBA将小数更改为逗号自动

我在VBA中有一个Excelmacros。 昨天一切正常,今天早上VBA正在取小数点,并把点改为逗号。 那是从5.1到5.1。 我正在使用德语系统,并设置了Excels高级选项,点是小数,逗号是数千。

例如,我在Excel表中设置3.75的日常Scrum会议价值

Excel工作表input:
截图

当我使用一个函数来读取值如:

Sub TestFunction() MsgBox (Sheets("Input_Parameters").Cells(25, 2)) End Sub 

我用逗号获得价值。

VBAfunction输出:
产量

有没有在VBA环境中的设置来解决这个问题,或者是有我缺less的东西。 我所有的macros备份都显示相同的影响,所以我知道这是我在今天的版本中的代码已经改变了。

谢谢您的帮助。

这是在德语系统上使用德语默认语言环境Windows设置(逗号作为小数点分隔符,在Windows设置中指向千位分隔符)的正常行为。

 MsgBox .Cells(25, 2).Value 

以Windows语言环境的默认格式返回值。

您在Excel选项中设置的Application.DecimalSeparator影响单元格中显示的内容,但不影响消息框显示的内容。

所以你可以使用

 MsgBox .Cells(25, 2).Text 

它以单元格格式的文本forms返回值。


另一个解决方法是用replace()函数replace逗号:

 MsgBox Replace(.Cells(25, 2).Value, ",", ".") 

我来到德国之后创造的第一个职能是:

 Public Function change_commas(ByVal myValue As Variant) As String Dim str_temp As String str_temp = CStr(myValue) change_commas = Replace(str_temp, ",", ".") End Function 

自从最近2年以来,每个VBA项目都存在。 尽pipe我已经改变了我写函数名和variables的风格,但是这个留下来了。