【エクセル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日が出力されます