我在VBA中有一个Excel宏。昨天一切正常,今天早上VBA拿小数点并将点改为逗号。那是5.1到5,1。我使用的是德语系统,并在Excels中设置了高级选项,其中一个点是小数,逗号是数千。
例如,我在Excel工作表设置为3.75
时有每日Scrum会议的值当我使用函数读取值时,例如:
Sub TestFunction()
MsgBox (Sheets("Input_Parameters").Cells(25, 2))
End Sub
我用逗号获取值。
VBA环境中是否有设置可以修复此问题,或者是否存在我遗漏的问题。我对宏的所有备份都显示出相同的效果,所以我知道在今天的版本代码中我没有改变。
感谢您的帮助。
答案 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项目中。虽然我已经改变了我写函数名和变量的风格,但这个已经存在了。