'対象日に対応する締め日
'対象日:ExpressionDate:Date
'締日:CutoffDayNum:Int
'戻り値:直近の締め日:Date
Function CutoffDate(ExpressionDate As Date, ByVal CutoffDayNum As Integer) As Date
Dim tmp As String
tmp = Format(DateAdd("m", 1, ExpressionDate - CutoffDayNum), "yyyy/mm/")
Do Until IsDate(tmp & CStr(CutoffDayNum))
CutoffDayNum = CutoffDayNum - 1
Loop
CutoffDate = DateValue(tmp & CStr(CutoffDayNum))
End Function
'締め日に対応する支払日
'締め日:ExpressionDate:Date
'隔月:IntervalMonth:Int 0:当月 1:翌月 2:翌々 3:翌々々 ....
'月支払日:DayNum:Int
'戻り値:IntervalMonth指定の支払日:Date
Function PayDate(ExpressionDate As Date, IntervalMonth As Integer, ByVal DayNum As Integer) As Date
Dim tmp As String
tmp = Format(DateAdd("m", IntervalMonth, ExpressionDate), "yyyy/mm/")
Do Until IsDate(tmp & CStr(DayNum))
DayNum = DayNum - 1
Loop
PayDate = DateValue(tmp & CStr(DayNum))
End Function
'対象日に対応する月初日
'対象日:ExpressionDate:Date
'隔月数IntervalMonth:Int 0:当月 1:翌月 -1:前月
'戻り値:IntervalMonth指定の月初日:Date
Function StartOfMonth(ExpressionDate As Date, Optional IntervalMonth As Integer = 0)
StartOfMonth = DateSerial(Year(ExpressionDate), Month(ExpressionDate) + IntervalMonth, 1)
End Function
'対象日に対応する月末日
'対象日:ExpressionDate:Date
'隔月数IntervalMonth:Int 0:当月 1:翌月 -1:前月
'戻り値:IntervalMonth指定の月末日:Date
Function EndOfMonth(ExpressionDate As Date, Optional IntervalMonth As Integer = 0)
EndOfMonth = DateSerial(Year(ExpressionDate), Month(ExpressionDate) + IntervalMonth + 1, 0)
End Function
2010/06/11
VBA 日付関数草案
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿