繁体   English   中英

为什么 VBA 会自动将十进制更改为逗号?

[英]Why is VBA changing decimal to comma automatically?

我在 VBA 中有一个 Excel 宏。 昨天一切正常,今天早上 VBA 将小数点更改为逗号。 那是从 5.1 到 5,1。

我使用的是德语系统,并在 Excel 的高级选项中设置了一个点是小数,逗号是千位。

例如,我在 Excel 表中设置了每日 Scrum 会议的值,设置为 3.75

Excel工作表输入:
截屏

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

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

我用逗号得到值。

VBA函数输出:
输出

VBA 环境中是否有设置来解决此问题,或者我缺少什么。 我所有的宏备份都显示出相同的效果,所以我知道在今天的版本中我没有更改任何代码。

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

MsgBox .Cells(25, 2).Value

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

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

因此你可以使用

MsgBox .Cells(25, 2).Text

它将值作为文本格式返回,就像单元格中一样。


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

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

在我来到德国后,我创建的第一个功能是:

Public Function ChangeCommas(ByVal myValue As Variant) As String

    Dim temp As String
    temp = CStr(myValue)
    ChangeCommas = Replace(temp, ",", ".")

End Function

自最近 2 年以来,它出现在每个 VBA 项目中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM