Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


14926 / 76738 ←次へ | 前へ→

【67298】単純な計算がうまくできません。
質問  八家九僧陀  - 10/11/21(日) 21:30 -

引用なし
パスワード
   「電子計算機等による年末調整」事務の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 ]と計算されるのか、訳が分かりません。どなたか、その原因、解決法を教えてください。

0 hits

【67298】単純な計算がうまくできません。 八家九僧陀 10/11/21(日) 21:30 質問
【67299】Re:単純な計算がうまくできません。 kanabun 10/11/21(日) 21:34 発言
【67300】Re:単純な計算がうまくできません。 kanabun 10/11/22(月) 9:50 発言
【67301】Re:単純な計算がうまくできません。 kanabun 10/11/22(月) 10:15 発言
【67304】Re:単純な計算がうまくできません。 八家九僧陀 10/11/22(月) 19:18 お礼
【67303】Re:単純な計算がうまくできません。 ホグペン 10/11/22(月) 17:20 回答

14926 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free