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(締め日付), 締め月, 支払実日)
なんてやり方もあります
通報 ...