|
「電子計算機等による年末調整」事務のVBAを作っているのですが、ごく単純な計算がうまくいきません。
ある金額(Aとします)のランクにより、そのランクの率、控除額を抽出、適用して、「A×率-控除額」(円未満切捨て)の計算をします。
金額が6,835,000円の場合、率は0.9、控除額は1,200,000円なので、「6,835,000*0.9-1,200,000」=4,951,500となるはずが、なぜか「4,951,499」と、ありえない数値になってしまい悩んでいます。
以下がそのVBAですが、その解決方法をご教示ください。
Private sub 計算()
Dim 年調給与額 As Long
年調給与額=Val(Text年調給与額.Value)'この場合[6,835,000]
Dim ritu_1 As Single '率 この場合[ 0.9 ]
Dim kouzyo_1 As Long '控除額 この場合[ 1,200,000 ]
Select Case 年調給与額
Case 年調給与額=Range("A2").Value To Range("B2").Value
ritu_1=Val(Range("C2").Value)
kouzyo_1=Val(Range("D2").Value)
Case 年調給与額=Range("A3").Value To Range("B3").Value
ritu_1=Val(Range("C3").Value)
kouzyo_1=Val(Range("D3").Value)
以下 9ランクほどのコードを記述しています。
Case Else
ritu_1=0
kouzyo_1=0
Text控除後所得額.Value = Application.WorksheetFunction.RoundDown(年調給与額 * ritu_1 - kouzyo_1,0)
なお、「MsgBox 年調給与額 * ritu_1 - kouzyo_1」でMsgBoxに表示させると、
[ 4951499.8370409 ]と ありえない??表示(計算)がされています。
そのRounddownですから、[ 4,951,499 ]となるのは分かるのですが、単純に「4,951,500」のはずが、なぜ[ 4951499.8370409 ]と計算されるのか、訳が分かりません。どなたか、その原因、解決法を教えてください。
|
|