私はいくつかのチェックルーチンをExcelファイルに書き込むためにvbaを使用しています。それらのうちの1人は、いくつかのセルの値が小数点以下2つ以下であるかどうかをチェックする必要があります。VBA小数点以下の桁数が2つしかないか確認してください。エラーInt()を使用して
Function checkValues(sheet as Worksheet) as Boolean
val = sheet.Cells(1,1).Value
val = val * 100
valInt = Int(val)
if valInt <> val then
checkValues = false
Exit Function
end if
checkValues = true
End Function
問題は、私は1,12に等しいセル(1,1)の値を入れたときに、この関数はFalseを返すということです。これを行うには、私は基本的にこのコードを持っている機能を記述します。私はデバッグを使用すると、valIntとvalの両方が112に等しいことがはっきりとわかりますが、なぜ 'valInt <> val'というステートメントが私に 'True'を与えるのかわかりません。
誰かが私を助けることができますか?
ps:私はすでにFix()関数に変更し、他の多くのステートメントを試してみます。
ありがとうございました。
私はロングとしてダブル、valintとしてのvalを宣言しなければならなかったが、それは私のために動作します。 '.Value'の代わりに' .Value2'を試してください。 –
倍精度の数値は十進数を正確に表すことができません(10進数の値がいくつかの累乗の和として表現されない限り、 1 + 2^-2')。 'val = CDec(val)* 100'を使ってみてください – YowE3K