4

我正在创建一个帮助人们自动处理数据的 Excel 文件。在这张表中,有一些数字必须被解析(并转换为其他单位,等等。简单的计算)。

这些数字采用美国格式,这意味着它们看起来像:

0,000,000.00

在德国,数字显示如下:

0.000.000,00

在 VBA 中,我实际上不知道正在使用哪个本地化版本的 Excel(德语或英语)。

问题: 是否有一种简单的方法可以将美国格式数字解析为数据类型 Double而不管用户使用的 Excel 本地化如何?

4

2 回答 2

5

一些笔记。我没有更改语言环境来测试。

'http://msdn.microsoft.com/en-us/library/office/bb177675(v=office.12).aspx
Debug.Print Application.International(xlCountryCode) 'Excel locale
Debug.Print Application.International(xlCountrySetting) 'Windows locale
sDecimal = Application.International(xlDecimalSeparator)
sThousand = Application.International(xlThousandsSeparator)

sNumber = "1,000,000.00"

If sThousand <> "," Then
    If sDecimal <> "." Then
        sNumber = Replace(sNumber, ",", "")
        sNumber = Replace(sNumber, ".", sDecimal)
    End If
End If

Debug.Print sNumber
于 2012-11-08T10:45:49.773 回答
1

一个可能的解决方案可能是:
cells(y, x) = Val(Replace(cells(y, x).Text, ",", ""))

Val 总是使用 . 作为小数点(例如 CDbl 使用文化设置,在德语 Excel 中测试)。

于 2012-11-08T10:39:31.067 回答