こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

access VBA 計算について

すいません。
http://qa.itmedia.co.jp/qa9245657.html
で質問したのですがわかりにくいこのこの上ないと思うので、画像を添付させていただきました。
まるでかこった部分でできないものです。

関係するのは
点数 負割 入金 負担金 値引き なのですが

[点数]*[負割]=負担金(四捨五入)

が主な式で、これに負担金-入金=値引き という式はできています。

例外が負割が200の時で

200の時のみ、[点数]×3 という式にしたいのです
これに出た数は 200以上の場合   例 600(点数)×3=1800
答えは1800ですが、強制的に200にしたいんです。
200以下の場合  45(点数)×3=135(第一位四捨五入で140)
としたいのです。

例外200の場合がうまくいかないので、お分かりになる方お知恵をお貸しください。お願いします。

私が考案して間違えている式は以下になります。


Private Sub 負担金_BeforeUpdate(Cancel As Integer)

If [負割] = 200 Then
  If [点数] * 3 > 200 = X Then
    X = 200
  Else
    If ([点数] * 3 Mod 10) < 5 Then
      X = [点数] * 3 - ([点数] * 3 Mod 10)
    Else
      X = [点数] * 3 - ([点数] * 3 Mod 10) + 10
    End If
    
If [負割] < 199 Then
  If [点数] * [負割] Then
  Else
    If ([点数] * [負割] Mod 10) < 5 Then
      X = [点数] * [負割] - ([点数] * [負割] Mod 10)
    Else
      X = [点数] * [負割] - ([点数] * [負割] Mod 10) + 10
    End If

Public Function Rounds(ByVal M As Currency, _
            ByVal A As Integer, _
            Optional D As Integer = 0) As Variant
  Dim R As Currency
 
  Select Case A
    Case 0 ' 四捨五入
      R = Fix(M * 10 ^ D + 0.5@)
    Case 1 '切り捨て
      R = Fix(M * 10 ^ D)
    Case 2 ' 切り上げ
      R = Rounds(M * 10 ^ D + 0.4@, 0)
  End Select
  Rounds = Sgn(M) * (R / 10 ^ D)
End Function

投稿日時 - 2016-10-21 11:46:17

QNo.9245680

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

負担金=[点数]*[負割] という式を、負割が200の時は[点数]×3に!
 ↓
負担金=[点数]*IIF([負割]=200, 3, [負割])

ということ?

なお、Rounds()は

Option Compare Database
Option Explicit

Public Const 四捨五入 = 0
Public Const 切り捨て = 1
Public Const 切り上げ = 2

と記号定数を利用すると

? Rounds(0.5, 四捨五入)
1
? Rounds(0.5, 切り捨て)
0

と読みやすく書く事ができます。

投稿日時 - 2016-10-21 20:09:00

ANo.1

こんにちは
良く理解出来ていないですが、
  If [負割] = 200 Then
    X = [点数] * 3
    If X > 200 Then
      X = 200
    Else
      If (X Mod 10) < 5 Then
        X = X - (X Mod 10)
      Else
        X = X - (X Mod 10) + 10
      End If
    End If
  ElseIf [負割] < 200 Then  '[負割が200より大きいケースは無い?
    X = [点数] * [負割]
    If (X Mod 10) < 5 Then
      X = X - (X Mod 10)
    Else
      X = X - (X Mod 10) + 10
    End If
  End If
こういう事でしょうか?

投稿日時 - 2016-10-21 14:48:15