Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA转换字符串“;12.00“;从12点改为1200点。这只发生在欧盟地区,而不是美国_Vba_Regional Settings - Fatal编程技术网

VBA转换字符串“;12.00“;从12点改为1200点。这只发生在欧盟地区,而不是美国

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, ".", ",")) 正如您在评论中已经指出的,这是一个区域设置-由于您的系

我不知道为什么,但vba中的字符串是“12.00”,当我转换为双精度时

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