年度
年度の場合は和暦や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 件のコメント:
コメントを投稿