4

人々がデータを自動的に処理するのに役立つ Excel ファイルを作成しています。このシート内には、解析する (および他の単位に変換するなどの簡単な計算) 必要がある数値があります。

数値は米国形式で表示されます。つまり、次のようになります。

0,000,000.00

ドイツでは、数字は次のように表示されます。

0.000.000,00

VBA では、どのローカライズ バージョンの Excelが使用されているか (ドイツ語または英語) 、実際にはわかりません。

質問:ユーザーが使用する Excel のローカリゼーションに関係なく、US 形式の数値をデータ型 Double に解析する簡単な方法はありますか?

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 に答える