Access VBAで業務システムを開発していると、
- 月末日を計算したい
- 請求日の翌月末を求めたい
- 90日後の日付を取得したい
- 保証期限を計算したい
- ログ削除基準日を求めたい
といった日付計算が頻繁に発生します。
Access VBAの日付計算はDateAdd関数を覚えることでほとんど対応できます。
実際の業務システムでは、
請求管理
売上管理
在庫管理
設備点検
ログ管理
契約管理
など、あらゆるシステムで利用される重要な関数です。
またCopilotが生成するVBAコードにも頻繁に登場するため、Access VBA開発者なら必須レベルの知識といえます。
- DateAdd関数とは
- 基本構文
- DateAddで使用する主な指定値
- 逆引き① 翌日を取得したい
- 逆引き② 30日後を取得したい
- 逆引き③ 1ヶ月後を取得したい
- 逆引き④ 1年前を取得したい
- 逆引き⑤ 月末日を取得したい
- 月初日を取得する
- 実務活用例① 請求管理システム
- 実務活用例② 設備管理システム
- 実務活用例③ ログ管理システム
- 実務活用例④ 売上管理システム
- 実務活用例⑤ 契約管理システム
- DateDiffとの違い
- DateSerialとの組み合わせ
- ベテラン開発者の定番コード
- Copilot活用術① 月末計算コード生成
- Copilot活用術② 期限管理作成
- Copilot活用術③ SQL作成
- DateAdd利用時の注意点
- DateAddが向いている処理
- 開発現場での利用頻度
- まとめ
DateAdd関数とは
DateAdd関数は、
指定日付
↓
日・月・年を加算
↓
新しい日付取得
を行う関数です。
基本構文
DateAdd(間隔, 加算値, 基準日付)
例
DateAdd("d", 1, Date())
結果
翌日
になります。
DateAddで使用する主な指定値
| 指定値 | 意味 |
|---|---|
| d | 日 |
| m | 月 |
| yyyy | 年 |
| q | 四半期 |
| ww | 週 |
| h | 時間 |
| n | 分 |
| s | 秒 |
逆引き① 翌日を取得したい
最も基本です。
Debug.Print _
DateAdd("d", 1, Date())
結果
今日の翌日
逆引き② 30日後を取得したい
契約管理でよく利用します。
Debug.Print _
DateAdd("d", 30, Date())
活用例
仮登録期限
支払期限
保証期限
逆引き③ 1ヶ月後を取得したい
請求処理の定番です。
Debug.Print _
DateAdd("m", 1, Date())
例
2026/09/20
↓
2026/10/20
逆引き④ 1年前を取得したい
履歴検索です。
Debug.Print _
DateAdd("yyyy", -1, Date())
活用例
過去1年分抽出
です。
逆引き⑤ 月末日を取得したい
実務で非常によく使います。
Debug.Print _
DateAdd("d", -1, DateSerial(Year(Date), Month(Date)+1, 1))
結果
当月末日
取得できます。
月初日を取得する
セットで覚えたいテクニックです。
DateSerial(Year(Date), Month(Date), 1)
結果
当月初日
です。
実務活用例① 請求管理システム
請求日計算です。
例
dtmDueDate = _
DateAdd("m", 1, Date())
効果
支払期限自動計算できます。
実務活用例② 設備管理システム
点検期限です。
dtmNextCheck = _
DateAdd("m", 6, Me!点検日)
効果
次回点検日自動作成できます。
実務活用例③ ログ管理システム
削除対象判定です。
dtmLimit = _
DateAdd("d", -90, Date())
SQL
CurrentDb.Execute _
"DELETE FROM T_LOG " & _
"WHERE 実行日 < #" & _
dtmLimit & "#"
効果
90日以前のログ削除
実務活用例④ 売上管理システム
締日計算です。
dtmCloseDate = _
DateAdd("m", 1, Me!売上日)
活用
月次処理
売掛処理
請求処理
実務活用例⑤ 契約管理システム
契約満了日です。
dtmExpire = _
DateAdd("yyyy", 1, dtmStartDate)
効果
契約期限自動計算
DateDiffとの違い
初心者が混同しやすいポイントです。
DateAdd
DateAdd
用途
日付を加算
DateDiff
DateDiff
用途
日付差分取得
例
DateDiff("d", Date(), dtmTarget)
結果
残り日数
です。
DateSerialとの組み合わせ
ベテラン開発者がよく使います。
翌月初日取得
DateSerial(Year(Date), Month(Date)+1, 1)
当月末取得
DateAdd("d", -1, DateSerial(Year(Date), Month(Date)+1, 1))
月次処理では定番です。
ベテラン開発者の定番コード
ログ削除処理です。
Dim dtmLimit As Date
dtmLimit = _
DateAdd("d", -90, Date())
SQL実行
CurrentDb.Execute _
"DELETE FROM T_LOG " & _
"WHERE 実行日 < #" & _
Format( _
dtmLimit, _
"yyyy/mm/dd") & "#"
非常によく利用されるパターンです。
Copilot活用術① 月末計算コード生成
Copilotへの依頼例です。
Access VBAです。
当月末日を取得する
コードを作成してください。
Copilot活用術② 期限管理作成
設備点検日から
6ヶ月後を算出する
コードを作成してください。
Copilot活用術③ SQL作成
90日以前のログを削除する
VBAコードを
作成してください。
DateAddを使ったコード生成との相性は非常に良いです。
DateAdd利用時の注意点
月末問題
例えば
DateAdd("m",1,#2026/1/31#)
の場合、
月の日数によって結果が変化します。
日付型で管理する
文字列ではなく
Date型
を利用しましょう。
SQLの日付形式
SQL利用時は
Format
を利用すると安全です。
DateAddが向いている処理
特に活躍するのは次の用途です。
- 請求期限管理
- 契約管理
- 設備点検管理
- ログ削除
- 売上締処理
- 在庫期限管理
- バッチ処理
開発現場での利用頻度
| 順位 | 用途 |
|---|---|
| 1位 | 月末計算 |
| 2位 | 請求期限計算 |
| 3位 | ログ削除基準日 |
| 4位 | 契約期限管理 |
| 5位 | 設備点検期限 |
Access開発では毎週のように利用する定番関数です。
まとめ
DateAdd関数はAccess VBAの日付処理における必須関数です。
特に
- 月末計算
- 請求期限管理
- 設備点検管理
- ログ削除
- 契約期限管理
などで大きな効果を発揮します。
まずは次の3つを覚えましょう。
DateAdd("d",1,Date())
DateAdd("m",1,Date())
DateAdd("yyyy",1,Date())
これだけでも実務の日付計算の大部分に対応できます。
Copilotを活用すれば、
- 月末計算コード生成
- 期限管理ロジック作成
- SQL作成支援
も効率的に進められます。
Access VBA開発者なら確実に習得しておきたい重要関数の一つです。

コメント