Microsoft Access 掲示板

締日・支払期日をユーザー定義関数で作りたい / 10

11 コメント
views
10
hiroton 2025/02/21 (金) 10:15:10 bb150@f966d

           支払期日 = DateSerial(Year([締め日付]), Month([締め日付]) + [支払月間], [支払実日])
           If [支払実日] = 0 Then 支払期日 = DateSerial(Year([締め日付]), Month([締め日付]) + [支払月間] + 1, [支払実日])

支払実日 = 0のとき、1行目の処理に意味がない(直後に支払期日が上書きされる)のと、支払実日 = 0のときは支払実日は「0」でしかないので

           If 支払実日 = 0 Then
               支払期日 = DateSerial(Year(締め日付), Month(締め日付) + 支払月間 + 1, 0)
           Else
               支払期日 = DateSerial(Year(締め日付), Month(締め日付) + 支払月間, 支払実日)
           End If

のほうがきれいな書き方です

または、結局似たような計算式を並べるだけになっているので、この部分に限ってはIIfを使って

支払期日 = DateSerial(Year(締め日付), Month(締め日付) + 支払月間 + IIf(支払実日 = 0, 1, 0), 支払実日)

でもいいと思います。

もしくは、共通部分以外を変数を用意して事前に計算する

Dim 締め月 As Long
締め月 = Month(締め日付) + 支払月間 + IIf(支払実日 = 0, 1, 0)
支払期日 = DateSerial(Year(締め日付), 締め月, 支払実日)

なんてやり方もあります

通報 ...