[英]Why is VBA changing decimal to comma automatically?
我在 VBA 中有一个 Excel 宏。 昨天一切正常,今天早上 VBA 将小数点更改为逗号。 那是从 5.1 到 5,1。
我使用的是德语系统,并在 Excel 的高级选项中设置了一个点是小数,逗号是千位。
例如,我在 Excel 表中设置了每日 Scrum 会议的值,设置为 3.75
当我使用函数读取值时,例如:
Sub TestFunction()
MsgBox (Sheets("Input_Parameters").Cells(25, 2))
End Sub
我用逗号得到值。
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.