2018年11月5日月曜日

日付

年度


年度の場合は和暦やxx年度といった表記になることが多いと思うので、Formatしてテキストを戻すようにするのが良いように思います。
'========================================================================='
    Function FiscalYear( _
        Optional ByVal pDate As Date, _
        Optional ByVal pFormat As String, _
        Optional ByVal pFYStartMonth As Integer _
    ) As String
''  指定日の年度を指定のFormatで返す。
''  CY内に翌FYが開始する場合は開始月にマイナスを付けて指定する
'========================================================================='
        Dim buff As Date
       '初期化'
        FiscalYear = ""
        If pDate = 0 Then pDate = Date
        If pFormat = "" Then pFormat = "yyyy"
        If pFYStartMonth = 0 Then pFYStartMonth = 4
       '年度算出'
        buff = DateSerial(Year(pDate), Month(pDate) - (pFYStartMonth - 1), 1)
       '書式を設定しリターン'
        FiscalYear = Format(buff, pFormat)
    End Function

一日、末日


指定する日をテキストで渡すんだけど、今月?当月?ってなっちゃうので、enumを設定してインテリセンスが効くようにすると便利です。
Option Explicit
Enum TheDayOfaMonth
    前月一日 = 0
    前月末日
    当月一日
    当月末日
    来月一日
    来月末日
End Enum
'========================================================================='
    Function DayOfaMonth( _
        ByVal pTheDay As TheDayOfaMonth, _
        Optional pDate As Date _
    ) As Date
'========================================================================='
        '初期化'
        DayOfaMonth = 0
        If pDate = 0 Then pDate = Date
        
        Select Case pTheDay
        Case 前月一日
            DayOfaMonth = DateSerial(Year(pDate), Month(pDate) - 1, 1)
        Case 前月末日
            DayOfaMonth = DateSerial(Year(pDate), Month(pDate), 0)
        Case 当月一日
            DayOfaMonth = DateSerial(Year(pDate), Month(pDate), 1)
        Case 当月末日
            DayOfaMonth = DateSerial(Year(pDate), Month(pDate) + 1, 0)
        Case 来月一日
            DayOfaMonth = DateSerial(Year(pDate), Month(pDate) + 1, 1)
        Case 来月末日
            DayOfaMonth = DateSerial(Year(pDate), Month(pDate) + 2, 0)
        End Select

    End Function

締日


20日締翌月末

こういうのはなかなか思いつかないですね
    DateSerial(Year(Date), Month(Date) + 2 - (day(Date) > 20), 0)

0 件のコメント:

コメントを投稿