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