は、次のVBA関数を考えてみましょう:イミディエイトウィンドウからそれを呼び出すこれはVBAのIsNumericおよびCDbl()関数のバグですか?
Function castAndAdd(inputValue As Variant) As Variant
If IsNumeric(inputValue) Then
castAndAdd = CDbl(inputValue) + 4
Else
castAndAdd = inputValue
End If
End Function
は、この出力を与える:
"5,7" コールを通じてステッピング?castAndAdd("5,7")
61
?castAndAdd("5, 7")
5, 7
、私はIsNumeric("5,7")
戻りtrue
ことがわかります。ヨーロッパでカンマが小数点の区切り記号として使用されているため、この結果が得られた可能性があります。私は米国にいるのでこの結果は奇妙なので、ロケールはExcelがピリオドを小数点区切り文字として認識するだけであると判断する必要があります。
ヨーロッパ/米国の問題を脇に置いても、大きな問題は、CDbl( "5,7")が57を返すため、CDbl("5,7") + 4
は、コンマが10進数の場合、セパレータ。これはバグですか、それともCDbl()
の使い方が分かりませんか?
'CDbl'は'、 'を' '" 'に置き換えた、つまりそれを削除すると思います。 – newguy