Microsoft Access 掲示板

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

11 コメント
views
4 フォロー
2
beginner 2025/02/19 (水) 08:41:24 61dd6@f300d

hirotonさん ありがとうございます。
”※VBAで解釈できない計算式(SQL記述)の場合はこの方法ではうまくいかない場合があります
※VBA記述のマナーは無視しているので、ユーザー定義関数がうまく動作することが確認出来たらVBA記述として望ましい記述か?を別途見直してみるとよいです”とありますが、マナー無視している事になるのでしょうか?(すみません知識不足で)

通報 ...
    • 3
      hatena 2025/02/19 (水) 09:41:11 修正 >> 2

      VBAは、Is Null は使えないので、代わりにIsNull関数を使います。

      Function 締め日付(締め実日, 売上日付)
          締め日付 = IIf(IsNull(締め実日), 売上日付, DateSerial(Year(売上日付), Month(売上日付) + IIf(Day(売上日付) > 締め実日, 1, 0), 締め実日))
      End Function
      

      あと、VBAを使うならIf構文を使った方が読みやすいように思います。

      Function 締め日付(締め実日, 売上日付)
          If IsNull(締め実日) Then
              締め日付 = 売上日付
          Else
              締め日付 = DateSerial(Year(売上日付), Month(売上日付), 締め実日)
              If Day(売上日付) > 締め実日 Then 締め日付 = DateAdd("m", 1, 締め日付)
          End If
      End Function