Dim A, B
'日付の比較
A = CDate("2020/1/1")
B = CDate("2020/1/2")
If A < B Then '大なり
If A > B Then '小なり
If A = B Then '等しい
If A <> B Then '等しくない'2つの日付から差分を計算
A = DateDiff("yyyy", "2020/1/1", "2025/1/1") '5年
A = DateDiff("m", "2020/1/1", "2020/6/1") '5カ月
A = DateDiff("d", "2020/1/1", "2020/1/6") '5日
A = DateDiff("ww", "2020/1/1", "2020/2/1") '4週間'年初めからの日付を計算
A = DatePart("y", "2020/2/5") '36日
A = DatePart("ww", "2020/1/16") '3週目
A = DatePart("w", "2020/1/3") '6週日(金曜日)
では、解説していきます。
VBAで日付を比較する
日付を比較する場合は、演算子を使って比較することができます。
比較演算子は、『<』『>』『=』『<>』などです。
ただし、日付を比較する場合は、日付型で比較する必要があります。
文字列では比較はできない
文字列の日付で、比較をしてみます。
日付『"2020/1/1"』と『"2020/01/02"』を比較するVBAコードになります。
Sub TEST1()
Dim A, B
A = "2020/1/1"
B = "2020/01/02"
'日付を比較(正しく比較できない)
If A < B Then
MsgBox B & " の方が大きい"
Else
MsgBox A & " の方が大きい"
End If
End Sub
Sub TEST2()
Dim A, B
A = CDate("2020/1/1") '日付型に変換
B = CDate("2020/01/02") '日付型に変換'日付を比較
If A < B Then
MsgBox B & " の方が大きい"
Else
MsgBox A & " の方が大きい"
End If
End Sub
Sub TEST11()
Dim A, B, C
A = "2020/1/27"
'月の何週目かを取得
B = DateDiff("ww", "2020/1/1", A) + 1
'週の何日目かを取得
C = DatePart("w", A)
'セルを塗りつぶし
Cells(B, C).Offset(1, 0).Interior.Color = RGB(255, 255, 153)
End Sub
実行してみます。
カレンダーを塗りつぶし
日付『2020/1/27』が塗りつぶされています。
DateDiffとDatePartを使って、カレンダーの位置を取得できています。
今年が閏年かを確認(DatePart)
最後に、DatePartを使って指定した年が、閏年かを判定する方法をご紹介します。
大晦日『"2020/12/31"』で、年初めからの日数を取得して、366日間であれば閏年です。
2020年が閏年かを判定してみます。
Sub TEST12()
Dim A, B
A = "2020/12/31" '最後の年
B = DatePart("y", A) '年初めからの日数'閏年かを判定
If B = 366 Then
MsgBox "閏年です"
Else
MsgBox "閏年ではありません"
End If
End Sub