みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

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

締切り済みの質問

MicrosoftaccessVBAの計算

こんにちは。VBAで分からない点があるので教えてください。

下記なのですが、負割が[200]の時、[点数]×3で200を越えたら[負担金]フィールドの答えが200
それ以下は×3して四捨五入した数にしたいです。
それがどうしてもできません。

[負割]が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 10:48:09

QNo.9245657

困ってます

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

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

回答(1)

ANo.1

何がしたいのか良く判らないが、少なくとも

If [点数] * 3 > 200 = X Then

の文は間違っている。

投稿日時 - 2016-10-21 11:06:44