Sub TEST2()
Dim A, B, C
A = Cells(2, 1) '年
B = Cells(2, 2) '月
C = Cells(2, 3) '日'日付に変換
Cells(2, 4) = DateSerial(A, B, C)
End Sub
実行してみます。
セルの年月日を日付に変換
結果は、『2020/01/02』となりました。
セルから年月日を取得して日付に変換できています。
日付型に変換するとVBAで比較や計算ができる
年月日に分かれたままでも日付の比較や計算はできます。
しかし、それは、年と年を比較したり、もしくは月と月を引き算してみたりぐらいしかできません。
年月日を日付型に変換にすると、日付の比較や計算が簡単になります。
簡単な日付の比較と計算をやってみます。
Date型の日付を比較する
まず、Date型にした日付を比較してみます。
日付『2020/1/1』と日付『2020/1/2』を比較するVBAコードです。
『2020/1/2』の方が大きいかを判定しています。
Sub TEST3()
Dim A, B
A = DateSerial(2020, 1, 1) '日付に変換(2020/1/1)
B = DateSerial(2020, 1, 2) '日付に変換(2020/1/2)'日付を比較
If A < B Then
MsgBox B & "の方が大きいです"
Else
MsgBox A & "の方が大きいです"
End If
End Sub
実行してみます。
日付を比較
結果は、『2020/01/02の方が大きい』となりました。
DateSearialを使って日付型に変換すれば、日付同士を比較することができます。
Date型の日付を計算する
つづいて、Date型に変換した日付で加減算などの計算をしてみます。
日付『2020/1/1』に変換して、1日を足すVBAコードです。
Sub TEST4()
Dim A
A = DateSerial(2020, 1, 1) '日付に変換する(2020/1/1)'日付に1日を足す
MsgBox A + 1
End Sub
実行してみます。
日付に1日を足す
結果は、『2020/01/02』となりました。
日付の足し算ができています。
次に、日付同士の差分をとってみます。
日付同士の差分をとると、日付間の日数を取得できます。
日付『2020/1/1』と『2020/1/11』で、日付間の日数を取得するVBAコードです。
Sub TEST5()
Dim A, B
A = DateSerial(2020, 1, 1) '日付に変換する(2020/1/1)
B = DateSerial(2020, 1, 11) '日付に変換する(2020/1/11)'日付を引き算する
MsgBox B - A
End Sub
実行してみます。
日付同士を引き算する
結果は、『10』日間となりました。
日付型であれば、日付同士を比較して差分を出すことができます。
なので、日付を比較や計算したい場合は、DateSerialなどで日付型に変換しましょう。
文字列の日付で比較や計算はできない
文字列の日付では、比較や計算ができません。
簡単な例でやってみます。
文字列の日付を比較してみる
文字列の日付で比較すると、うまく日付を比較することができません。
例えば、日付『"2020/1/1"』と『"2020/01/02"』を比較するVBAコードです。
Sub TEST6()
Dim A, B
A = "2020/1/1"
B = "2020/01/02"
'文字列で日付を比較
If A < B Then '←比較ができない
MsgBox B & "の方が大きい"
Else
MsgBox A & "の方が大きい"
End If
End Sub