为什么 VBA 会自动将小数点更改为逗号?
Why is VBA changing decimal to comma automatically?
我在 VBA 中有一个 Excel 宏。昨天一切正常,今天早上 VBA 正在将小数点更改为逗号。即从 5.1 到 5,1.
我使用的是德语系统,并且在Excel的高级选项中设置了点是小数点,逗号是千位。
例如,我在 Excel sheet 中将每日 scrum 会议的值设置为 3.75
Excel sheet 输入:
当我使用函数读取值时,例如:
Sub TestFunction()
MsgBox (Sheets("Input_Parameters").Cells(25, 2))
End Sub
我用逗号得到值。
VBA函数输出:
VBA 环境中是否有设置可以解决此问题,或者我是否遗漏了什么。我所有的宏备份都显示出相同的影响,所以我知道我在今天的版本中没有对代码进行任何更改。
在具有德语默认语言环境 Windows 设置的德语系统上这是正常行为(在 Windows 设置中逗号作为小数点分隔符,点作为千位分隔符)。
MsgBox .Cells(25, 2).Value
returns 具有 Windows 语言环境默认值格式的值。
您在 Excel 选项中设置的 Application.DecimalSeparator
会影响单元格中显示的内容,但不会影响消息框显示的内容。
因此您可以使用
MsgBox .Cells(25, 2).Text
其中 returns 值的文本格式与单元格中的格式相同。
另一种解决方法是用 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 项目中。
我在 VBA 中有一个 Excel 宏。昨天一切正常,今天早上 VBA 正在将小数点更改为逗号。即从 5.1 到 5,1.
我使用的是德语系统,并且在Excel的高级选项中设置了点是小数点,逗号是千位。
例如,我在 Excel sheet 中将每日 scrum 会议的值设置为 3.75
Excel sheet 输入:
当我使用函数读取值时,例如:
Sub TestFunction()
MsgBox (Sheets("Input_Parameters").Cells(25, 2))
End Sub
我用逗号得到值。
VBA函数输出:
VBA 环境中是否有设置可以解决此问题,或者我是否遗漏了什么。我所有的宏备份都显示出相同的影响,所以我知道我在今天的版本中没有对代码进行任何更改。
在具有德语默认语言环境 Windows 设置的德语系统上这是正常行为(在 Windows 设置中逗号作为小数点分隔符,点作为千位分隔符)。
MsgBox .Cells(25, 2).Value
returns 具有 Windows 语言环境默认值格式的值。
您在 Excel 选项中设置的 Application.DecimalSeparator
会影响单元格中显示的内容,但不会影响消息框显示的内容。
因此您可以使用
MsgBox .Cells(25, 2).Text
其中 returns 值的文本格式与单元格中的格式相同。
另一种解决方法是用 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 项目中。