Microsoft Access 掲示板

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

11 コメント
views
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