日付計算用関数

広告

広告

解説

基点日から何ヶ月前、又は何ヶ月後を算出する関数

引数・戻値

第一引数:基準日(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

広告

Copyright (C) 2003-2006 七鍵 key@do.ai 初版:2003年07月07日 最終更新:2006年08月08日