【エクセルVBA】日付に指定された期間を足す、引く

当ページのリンクには広告が含まれています。

スポンサーリンク

VBAを用いて 指定された日付に日数、月数、年数などを足したり、引いたりする方法を解説します

クリックしてジャンプ

特定の日付に期間を足す・引く

DateAdd関数は、指定された日付に日数、月数、年数などを足したり、引いたりした新しい日付を返します

Dim futureDate As Date
futureDate = DateAdd("d", 10, Date) ' 今日から10日後
MsgBox "10日後の日付は " & futureDate & " です。"

DateAdd関数の構文

DateAdd関数の基本的な構文は以下の通りです

DateAdd(interval, number, date)
  • interval: 追加または減算する時間の単位を指定します。例えば、「日」「月」「年」「時間」などです。
  • number: 追加または減算する数値を指定します。正の数を指定すると日付を進め、負の数を指定すると日付を戻します。
  • date: 基準となる日付を指定します。

intervalの指定方法

intervalは以下のように文字列で指定します

interval説明
“yyyy”
“q”四半期
“m”
“y”日(年の通日)
“d”
“w”平日
“ww”
“h”
“n”
“s”

1ヶ月後の日付を取得

Sub AddOneMonth()
    Dim baseDate As Date
    Dim newDate As Date
    baseDate = Date ' 今日の日付
    newDate = DateAdd("m", 1, baseDate) ' 1ヶ月後の日付を取得
    Range("A1").Value = newDate
End Sub

解説: 今日の日付から1ヶ月後の日付を計算します

出力結果: 実行日が2024年1月1日の場合、2024年2月1日が出力されます。

3日後の日付を取得

Sub AddThreeDays()
    Dim baseDate As Date
    Dim newDate As Date
    baseDate = Date ' 今日の日付
    newDate = DateAdd("d", 3, baseDate) ' 3日後の日付を取得
    Range("A1").Value = newDate
End Sub

解説: 今日の日付から3日後の日付を計算します

出力結果: 実行日が2024年1月1日の場合、2024年1月4日が出力されます

2時間前の時刻を取得

Sub SubtractTwoHours()
    Dim baseTime As Date
    Dim newTime As Date
    baseTime = Time ' 現在の時刻
    newTime = DateAdd("h", -2, baseTime) ' 2時間前の時刻を取得
    Range("A1").Value = newTime
End Sub

解説: 現在の時刻から2時間前の時刻を計算します

出力結果: 実行時刻が午前10時の場合、午前8時が出力されます

次の週末の日付を取得

Sub NextWeekend()
    Dim baseDate As Date
    Dim nextSaturday As Date
    baseDate = Date ' 今日の日付
    nextSaturday = DateAdd("ww", 1, baseDate - Weekday(baseDate) + 7) ' 次の土曜日の日付を取得
    Range("A1").Value = nextSaturday
End Sub

解説: 今日の日付から次の土曜日の日付を計算します

出力結果: 実行日が2024年1月1日(月曜日)の場合、2024年1月6日(土曜日)が出力されます

半年後の日付を取得

Sub AddSixMonths()
    Dim baseDate As Date
    Dim newDate As Date
    baseDate = Date ' 今日の日付
    newDate = DateAdd("m", 6, baseDate) ' 半年後の日付を取得
    Range("A1").Value = newDate
End Sub

解説: 今日の日付から半年後の日付を計算します

出力結果: 実行日が2024年1月1日の場合、2024年7月1日が出力されます

スポンサーリンク

クリックしてジャンプ