VBA转换字符串“;12.00“;从12点改为1200点。这只发生在欧盟地区,而不是美国
我不知道为什么,但vba中的字符串是“12.00”,当我转换为双精度时VBA转换字符串“;12.00“;从12点改为1200点。这只发生在欧盟地区,而不是美国,vba,regional-settings,Vba,Regional Settings,我不知道为什么,但vba中的字符串是“12.00”,当我转换为双精度时 myDouble= CDbl(stringDouble) 或 我什么也做不了。。有什么帮助吗?(我无法在所有电脑上将区域设置更改为US…) 谢谢这很可能是由于区域设置-小数点分隔符不同。例如,在我的语言环境中,它是,-这就是为什么对于字符串到数字的转换,我使用这样的语法: x = "12.00" DBLnum = CDbl(Replace(x, ".", ",")) 正如您在评论中已经指出的,这是一个区域设置-由于您的系
myDouble= CDbl(stringDouble)
或
我什么也做不了。。有什么帮助吗?(我无法在所有电脑上将区域设置更改为US…)
谢谢这很可能是由于区域设置-小数点分隔符不同。例如,在我的语言环境中,它是
,
-这就是为什么对于字符串到数字的转换,我使用这样的语法:
x = "12.00"
DBLnum = CDbl(Replace(x, ".", ","))
正如您在评论中已经指出的,这是一个区域设置-由于您的系统使用
,
作为十进制分隔符,字符串将转换为1200
。这种情况下的解决方案是使用Val
对其进行转换:
Sub Sample()
Dim myDouble As Double
Dim stringDouble As String
stringDouble = "12.00"
myDouble = Val(stringDouble)
End Sub
根据您的区域设置,这也可能导致错误的结果-例如,如果在英语设置“12345.67”上部署代码,将使用此公式转换为12.34567
Val(x)
应该做得更好@彼得·拉尔伯特很好的建议彼得,Val
是更普遍的建议。我使用上面的方法进行严格的输入。我的+1到你的版本。正是我需要的!这两种系统都适用。我还有另一个让我更疯狂的bug,因为它用一个错误的值覆盖了这个值。。
Sub Sample()
Dim myDouble As Double
Dim stringDouble As String
stringDouble = "12.00"
myDouble = Val(stringDouble)
End Sub