汎用関数/月初の年月日を取得するには

Last-modified: 2023-07-17 (月) 17:03:22

mdlDateTimeEx

Option Compare Database
Option Explicit
'月初の年月日を返す。
Public Function FirstDayOfMonth(intYear As Integer, intMonth As Integer) As Variant

On Error GoTo ErrorHandler

    FirstDayOfMonth = DateValue(intYear & "/" & intMonth & "/" & "1")

    Exit Function

ErrorHandler:

    Err.Raise Err.Number, Err.Source, Err.Description, Err.HelpFile, Err.HelpContext

End Function

Public Sub Test_FirstDayOfMonth()
    Debug.Assert FirstDayOfMonth(2023, 1) = #1/1/2023#
    Debug.Assert FirstDayOfMonth(2023, 2) = #2/1/2023#
    Debug.Assert FirstDayOfMonth(2023, 3) = #3/1/2023#
    Debug.Assert FirstDayOfMonth(2023, 4) = #4/1/2023#
    Debug.Assert FirstDayOfMonth(2023, 5) = #5/1/2023#
    Debug.Assert FirstDayOfMonth(2023, 6) = #6/1/2023#
    Debug.Assert FirstDayOfMonth(2023, 7) = #7/1/2023#
    Debug.Assert FirstDayOfMonth(2023, 8) = #8/1/2023#
    Debug.Assert FirstDayOfMonth(2023, 9) = #9/1/2023#
    Debug.Assert FirstDayOfMonth(2023, 10) = #10/1/2023#
    Debug.Assert FirstDayOfMonth(2023, 11) = #11/1/2023#
    Debug.Assert FirstDayOfMonth(2023, 12) = #12/1/2023#

    Debug.Assert FirstDayOfMonth(100, 1) = #1/1/100#
    Debug.Assert FirstDayOfMonth(9999, 12) = #12/1/9999#

    '環境依存
    Debug.Print FirstDayOfMonth(0, 1)   '2000年
    Debug.Print FirstDayOfMonth(49, 1)  '2049年
    Debug.Print FirstDayOfMonth(50, 1)  '1950年
    Debug.Print FirstDayOfMonth(99, 1)  '1999年

End Sub