サイトについて      連絡先   検索

VBA 日付の操作

はじめに

Excel VBA の 日付 (Date) を操作する方法を紹介します。

VBA の日付型は日付と時刻を扱います。

日付型の計算、比較、取得などを紹介します。

日付型

日付型は日付と時刻を一緒に扱います。

型名 データ型 値の例や範囲
Date日付型西暦100年1月1日 ~ 西暦9999年12月31日 の日付と時刻

日付型をコードで書くには日付を # で囲みます。書式は #月/日/年 時:分:秒# です。

Dim 日付 As Date
日付 = #3/30/2013# ' #月/日/年#

Dim 時刻 As Date
時刻 = #1:2:3# ' #時:分:秒#

Dim 日付と時刻 As Date
日付と時刻 = #3/30/2013 1:2:3# ' #月/日/年 時:分:秒#

この書式はわかりづらいため、文字列で "年/月/日" の形式で指定できます。

文字列を日付型に代入すると、自動で日付型に変換されます。

Dim 日付 As Date
日付 = "2013/3/30"

Dim 時刻 As Date
時刻 = "1:2:3"

Dim 日付と時刻 As Date
日付と時刻 = "2013/3/30 1:2:3"

日付の計算

算術演算子で日付の計算ができます。

演算子 演算名 使用例 結果
+足し算2013/01/01 + 12013/01/02
-引き算2013/01/09 - 12013/01/08
Dim d As Date
d = "2013/01/01"
d = d + 1

Debug.Print (d) ' 2013/01/02

日付や時刻を計算したいときは「DateAdd 関数」を使用します。引数には (単位, 加算時間, 日時) を指定します。

単位には次のものがあります。

Dim d As Date
d = "2013/10/01"
d = DateAdd("yyyy", 1, d)
Debug.Print (d) ' 2014/10/01

d = DateAdd("d", -1, d)
Debug.Print (d) ' 2014/09/30

日付の比較

日付を比較するには比較演算子で比較できます。

Dim d1 As Date
d1 = "2013/1/1"

Dim d1 As Date
d2 = "2013/1/2"

If d1 < d2 Then
    Debug.Print ("d1 が小さい")
End If

指定した日時の範囲内にあるかチェックしたいときは次のようにしてできます。

Dim 対象の日時 As Date
対象の日時 = Now ' 現在の日時を入れる

Dim 開始日時 As Date
開始日時 = "2013/1/1"

Dim 終了日時 As Date
終了日時 = "2013/1/31 23:59:59"

' 2013年 の一月の範囲内かチェックします。
If 開始日時 <= 対象の日時 And 対象の日時 <= 終了日時 Then
    Debug.Print ("範囲内")
End If

日付の取得

日付型から年、月、日を取得するときは「Year 関数」、「Month 関数」、「Day 関数」を使用します。

日付型から時、分、秒を取得するときは「Hour 関数」、「Minute 関数」、「Second 関数」を使用します。

Dim d As Date
d = "2013/1/2 3:4:5"

Debug.Print (Year(d)) ' 2013
Debug.Print (Month(d)) ' 1
Debug.Print (Day(d)) ' 2
Debug.Print (Hour(d)) ' 3
Debug.Print (Minute(d)) ' 4
Debug.Print (Second(d)) ' 5

二つの日付の間隔を取得するときは「DateDiff 関数」を使用します。引数には (単位, 日時1, 日時2) を指定します。

単位には次のものがあります。

Dim d1 As Date
d1 = "2013/1/1"

Dim d2 As Date
d2 = "2013/1/7"

Debug.Print (DateDiff("d", d1, d2)) ' 6

関連ページ