ray88’s diary

お仕事で困ったとき用の自分用の覚書

VBA  yyyymm形式とyyyy/mm/dd形式の日付の比較

■日付の比較は一旦「yyyy/MM/dd」形式にした上で、Cdate関数で日付型に変換してから比較する
f:id:ray88:20210211112327p:plain

Sub test()
    Dim ws As Worksheet
    Dim strDatePrevYYYY_M_1 As String   '前月1日文字型
    Dim strDateNextYYYY_M_1 As String   '翌月1日文字型
    Dim strTargetDate As String         '比較対象日付文字型
    Dim dateTargetDate As Date          '比較対象日付日付型    
    Dim blDateRange As Boolean          '比較結果        
    Set ws = ThisWorkbook.Sheets("Sheet1")    
    '前月1日を取得
    strDatePrevYYYY_M_1 = ws.Range("D2")
    '翌月1日を取得
    strDateNextYYYY_M_1 = ws.Range("D3")
    '比較対象日付を取得
    strTargetDate = ws.Range("D4")
    '比較対象日付に"01"を加えてYYYYMM形式→YYYYMMDD形式に変換
    strTargetDate = strTargetDate & "01"
    dateTargetDate = CDate(Format(strTargetDate, "####/##/##"))        
    '前月1日以降かつ翌月1日より前か?
    blDateRange = (CDate(strDatePrevYYYY_M_1) <= dateTargetDate) And (CDate(strDateNextYYYY_M_1) > dateTargetDate)    
    MsgBox strDatePrevYYYY_M_1 & " <= " & dateTargetDate & " < " & strDateNextYYYY_M_1 & vbCrLf & _
           vbCrLf & "比較結果:" & blDateRange
End Sub

参考URL
VBAで文字列から日付(Date型)に変換する | Excel作業をVBAで効率化