Excel VBA .Value2数字作为字符串

时间:2018-10-17 13:39:06

标签: excel vba excel-vba locale

我遇到了一些奇怪的行为。 我经常必须将Double值作为字符串传递,因为我需要在“ 0”和“”之间进行区分。

看下面这个简单的例子: (我在德国语言环境中,所以我的小数点分隔符是“,”)

Sub TestNumbers()
    With ActiveSheet
        .Cells(1, 1).Value2 = "1,6"
        .Cells(1, 2).Value2 = "1,67"
        .Cells(1, 3).Value2 = "1,678"
        .Cells(1, 4).Value = "1,6789"
    End With
End Sub

现在看一下输出: Why the hell?

为什么在3个小数位省略了逗号?如您所见,它发生在.value.value2上。

1 个答案:

答案 0 :(得分:1)

VBA就像在美国语言环境中一样运行。如果您在美国区域设置中手动将这些项目输入到单元格中,则会看到完全相同的结果,即一旦有足够的数字来保证逗号为千位分隔符,则强制转换为数字。

我承认我并没有真正遵循您的逻辑:“我经常必须将Double值作为字符串传递,因为我需要在“ 0”和“”之间进行区分。”