VBAで日付を扱う時によく使う関数(2)

日付の比較に使うことが多いのではないかと思われる関数です。
・DateDiff
・DateAdd
・DatePart

簡単に説明すると、DateDiffは指定した2つの時点の間隔を出力する関数、DatePartはある時点から指定した時点までの間隔を出力する関数、DateAddはある時点に指定した時間を足した(引いた)時点を出力する関数です。
例を以下に記述致します。

DateDiffの例
DateDiff(“m”, “2010-5-26″, “2010-7-22″) → 2 (ヶ月)
DateDiff(“ww”, “2010-5-26″, “2010-7-22″) → 9 (週)
DateDiff(“s”, “2010-5-26″, “2010-7-22″) → 4924800 (秒)
DateDiff(“y”, “2010-5-26″, “2010-7-22″) → 57 (日)

DatePartの例
DatePart(“w”, “2010/7/26″) → 1 (日目、日曜日を1日目として)
DatePart(“d”, “2010/7/26″) → 26 (日目、月の初めを1日目として)
DatePart(“y”, “2010/7/26″) → 207 (日目、1月1日を1日目として)
DatePart(“ww”, “2010/7/26″) → 30 (週目、1月1日の週を第一週目として)
DatePart(“q”, “2010/7/26″) → 3 (四半期)

DateAddの例
DateAdd(“m”, 2, “2010-7-22″) → 2010/09/22
DateAdd(“ww”, 2, “2010-7-22″) → 2010/08/05
DateAdd(“d”, 2, “2010-7-22″) → 2010/07/24
DateAdd(“q”, 2, “2010-7-22″) → 2011/01/22
DateAdd(“yyyy”, 2, “2010-7-22″) → 2012/07/22

この関数の第二引数には負の数を指定することもできます。

■実際の使用例
Ifで『最近一ヶ月以内なら』というような条件を指定したい時は、以下のようなソースを使ってみてはどうでしょうか?
If DateAdd(“m”, -1, Date) > “2010/07/03″ Then
MsgBox “一ヶ月以上前です”
Else
MsgBox “一ヶ月以内です”
End If

ここでは『”2010/07/03″』の部分に対象となる日付を入れる事で、最近一ヶ月以内かどうか判断することができます。

また『今月中なら』というような条件を指定したい時は、以下のようなソースになります。
If DatePart(“m”, Date) = DatePart(“m”, “2010/08/03″) Then
MsgBox “今月中です。”
Else
MsgBox “今月中ではありません。”
End If

ここでは『”2010/08/03″』の部分に対象となる日付を入れる事で、その日が今月中かどうか判断することができます。

■VBAでの日付比較のTips
VBAの場合、日付が正しいフォーマットで記述されていれば、『”2010/08/03″ > Date』のように直接比較できるので便利です。

※この記事は過去に別ブログで掲載していたものを若干加筆修正したものです。

スポンサードリンク

twitterまたはFacebookでもコメントして頂けます