Excel VBAでDateDiff関数を使って、期間計算する方法

DateDiff関数は、指定した2つの日付の時間間隔を計算する関数です。





Homeに戻る > Excel 日付・時刻関数のTipsへ

■ 構文
DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]])

■ 引数
interval : (必須) 間隔を計算するための、時間単位を指定します。
date1, date2 : (必須) 間隔を計算する日付を指定します。
firstdayofweek : (省略可)  週の始まりの曜日を表す定数を指定します。省略した場合、日曜日になります。
firstweekofyear : (省略可)  年度の第 1 週を表す定数を指定します。省略した場合、1月1日を含む週が第 1週になります。

■ intervalの定数
yyyy : 年
q : 四半期
m : 月
y : 年間通算日
d : 日
w : 週日
ww : 週
h : 時
n : 分
s : 秒

■ firstdayofweekの定数
bUseSystem : 0 - NLS API の設定値を使います。
vbSunday : 1 (既定値) - 日曜
vbMonday : 2 - 月曜
vbTuesday : 3 - 火曜
vbWednesday : 4 - 水曜
vbThursday : 5 - 木曜
vbFriday : 6 - 金曜
vbSaturday : 7 - 土曜

■ firstweekofyearの定数
vbUseSystem : 0 - NLS API の設定値を使います。
vbFirstJan1 : 1 (既定値) - 1月1 日を含む週を年度の第1週として扱います。
vbFirstFourDays : 2 - 7日のうち少なくとも 4 日が新年度に含まれる週を年度の第1 週として扱います。
vbFirstFullWeek : 3 - 全体が新年度に含まれる最初の週を年度の第 1 週として扱います

関連する「日付の加算・減算 DateAdd」も参照してください。



DateDiff関数をVBAで使ったExcel実行画面

現在の日付と入力された日付の、時間間隔を計算し表示するVBAを作成しました。

日付が入力されていなければメッセージが表示されます。

日付入力なしのエラーMsgBox

入力されたデータが日付の形式でなければ、メッセージが表示されます。

日付形式のエラーMsgBox

現在の時間から、年、日、週、時、分、秒の時間間隔を計算し表示します。

DateDiff関数の実行画面

DateDiff関数を使ったExcel VBA実行コード

Private Sub CommandButton1_Click()
    Dim tdate1 As Date
    Dim tdate2 As Date
    
    '入力されている日付のチェック
    If Range("C5") = "" Then
        MsgBox "計算する日付を入力してください。"
        Range("C5").Select
        Exit Sub
    End If
    
    If IsDate(Range("C5")) = False Then
        MsgBox "入力されている日付が不正です。"
        Range("C5").Select
        Exit Sub
    End If
    
    tdate1 = Range("C5")
        
    '現在の日付
    tdate2 = Now
    
    Range("B7") = "現在の時間:"
    Range("C7") = tdate2
    
    '間隔を計算し表示する
    Range("B8") = "年の間隔:"
    Range("C8") = DateDiff("yyyy", tdate1, tdate2)
    
    Range("B9") = "月の間隔:"
    Range("C9") = DateDiff("m", tdate1, tdate2)
    
    Range("B9") = "日の間隔:"
    Range("C9") = DateDiff("d", tdate1, tdate2)
    
    Range("B10") = "週の間隔:"
    Range("C10") = DateDiff("ww", tdate1, tdate2)
    
    Range("B11") = "時の間隔:"
    Range("C11") = DateDiff("h", tdate1, tdate2)
    
    Range("B12") = "分の間隔:"
    Range("C12") = DateDiff("n", tdate1, tdate2)
    
    Range("B13") = "秒の間隔:"
    Range("C13") = DateDiff("s", tdate1, tdate2)
    
End Sub


Homeに戻る > Excel 日付・時刻関数のTipsへ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved