VBA自动将十进制更改为逗号

时间:2017-05-09 07:16:21

标签: excel vba excel-vba decimal comma

我在VBA中有一个Excel宏。昨天一切正常,今天早上VBA拿小数点并将点改为逗号。那是5.1到5,1。我使用的是德语系统,并在Excels中设置了高级选项,其中一个点是小数,逗号是数千。

例如,我在Excel工作表设置为3.75

时有每日Scrum会议的值

Excel表格输入:
screenshot

当我使用函数读取值时,例如:

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

我用逗号获取值。

VBA功能输出:
output

VBA环境中是否有设置可以修复此问题,或者是否存在我遗漏的问题。我对宏的所有备份都显示出相同的效果,所以我知道在今天的版本代码中我没有改变。

感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

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

MsgBox .Cells(25, 2).Value

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

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

因此你可以使用

MsgBox .Cells(25, 2).Text

将值返回为格式化的文本格式。

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

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

答案 1 :(得分:1)

在我来德国之后,我创造的第一个功能之一就是这个:

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

自过去两年以来,它存在于每个VBA项目中。虽然我已经改变了我写函数名和变量的风格,但这个已经存在了。