広告
広告
基点日から何ヶ月前、又は何ヶ月後を算出する関数
第一引数: | 基準日(Date) |
---|---|
第二引数: | 区分1(Integer)[1:その日を算出、2:月初めを算出、3:月末を算出] |
第三引数: | 区分2(String) [">":未来を算出、"<":過去を算出] |
第四引数: | 月数(Long) |
戻り値: | 算出結果(String) |
Public Function SpDay(dayKt As Date, intKbn As Integer, strKbn As String, lngRyo As Long) As String If IsDate(dayKt) = False Then dayKt = Date End If If (intKbn <> 2) And (intKbn <> 3) Then intKbn = 1 End If If (strKbn <> "<") Then strKbn = ">" End If Dim strY As String, strM As String, strD As String, lngY As Long, lngM As Long lngY = CLng(Format(dayKt, "yy")) lngM = CLng(Format(dayKt, "MM")) strD = Format(dayKt, "dd") If strKbn = ">" Then lngM = lngM + lngRyo Else lngM = lngM - lngRyo End If If intKbn = 3 Then lngM = lngM + 1 End If Do Until (lngM >= 1) And (lngM <= 12) If lngM > 12 Then lngM = lngM - 12 lngY = lngY + 1 ElseIf lngM < 1 Then lngM = lngM + 12 lngY = lngY - 1 End If Loop If lngY < 0 Then lngY = lngY + 100 End If If intKbn = 1 Then SpDay = CStr(CDate(lngY & "/" & lngM & "/" & strD)) ElseIf intKbn = 2 Then SpDay = CStr(CDate(lngY & "/" & lngM & "/" & "01")) Else SpDay = CStr(CDate(lngY & "/" & lngM & "/" & "01") - 1) End If End Function
広告