更新日:、 作成日:
VBA 日付を比較する
はじめに
Excel VBA マクロの日付 (Date) を操作する方法を紹介します。
等しい =、等しくない <> や、以上 >=、以下 <= など、比較演算子を使用して日付を比較できます。
(開始日時 <= 対象日時) And (対象日時 <= 終了日時) のようにして、指定した日時が期間内か判定できます。
「DateValue 関数」から、日時の日付だけを取得できます。
「TimeValue 関数」から、日時の時刻だけを取得できます。
日付を比較する
比較演算子を使用して日付を比較できます。
= を入力して、日付が等しいか判定できます。
演算子 | 演算名 | 使用例 | 結果 |
= | 等しい | 1 = 2 | False |
<> | 等しくない | 1 <> 2 | True |
> | 大きい | 1 > 2 | False |
< | 小さい | 1 < 2 | True |
>= | 以上 | 1 >= 2 | False |
<= | 以下 | 1 <= 2 | True |
Dim b As Boolean
b = (CDate("2013/1/1") = CDate("2013/1/2"))
Debug.Print(b) ' False
b = (CDate("2013/1/1") <> CDate("2013/1/2"))
Debug.Print(b) ' True
b = (CDate("2013/1/1") >= CDate("2013/1/2"))
Debug.Print(b) ' False
b = (CDate("2013/1/1") <= CDate("2013/1/2"))
Debug.Print(b) ' True
比較演算子について詳しくは「演算子」をご覧ください。
期間内
論理演算子を使用して 2 つの日付の期間内か比較できます。
(開始日時 <= 対象日時) And (対象日時 <= 終了日時) のように入力して、指定した日時が期間内か判定できます。
Dim 対象日時 As Date
対象日時 = Now ' 調べたい日時
Dim 開始日時 As Date
開始日時 = "2013/1/1"
Dim 終了日時 As Date
終了日時 = "2013/1/31 23:59:59"
' 範囲内かチェックする
If (開始日時 <= 対象日時) And (対象日時 <= 終了日時) Then
Debug.Print("範囲内")
End If
「DateValue 関数」を使用して、日時から日付を取得できます。
同じようにして、指定した日付が期間内か判定できます
Dim 対象日 As Date
対象日 = DateValue(Now) ' 調べたい日付
Dim 開始日 As Date
開始日 = DateValue("2013/1/1") ' 2013/1/1
Dim 終了日 As Date
終了日 = DateValue("2013/1/31 23:59:59") ' 2013/1/31
' 範囲内かチェックする
If (開始日 <= 対象日) And (対象日 <= 終了日) Then
Debug.Print("範囲内")
End If
「TimeValue 関数」を使用して、日時から時刻を取得できます。
同じようにして、指定した時刻が期間内か判定できます
Dim 対象時刻 As Date
対象時刻 = TimeValue(Now) ' 調べたい時刻
Dim 開始時刻 As Date
開始時刻 = TimeValue("2013/1/1") ' 0:00:00
Dim 終了時刻 As Date
終了時刻 = TimeValue("2013/1/31 23:59:59") ' 23:59:59
' 範囲内かチェックする
If (開始時刻 <= 対象時刻) And (対象時刻 <= 終了時刻) Then
Debug.Print("範囲内")
End If
論理演算子について詳しくは「演算子」をご覧ください。
1 日や月末
Excel の「日付を自動で入力する」の方法で、1 日や月末など好きな日付を取得できます。
Excel の関数を使用するには「WorksheetFunction」をご覧ください。
Dim 対象 As Date
対象 = "2013/1/15"
Dim d As Date
' 1 日
d = DateSerial(Year(対象), Month(対象), 1)
Debug.Print(d) ' 2013/01/01
' 月末
d = WorksheetFunction.EoMonth(対象, 0)
Debug.Print(d) ' 2013/01/31
スポンサーリンク