PR

Access VBA逆引き集|DateAdd関数で日付計算を自在に操る実践テクニックとCopilot活用術

VBA

Access VBAで業務システムを開発していると、

  • 月末日を計算したい
  • 請求日の翌月末を求めたい
  • 90日後の日付を取得したい
  • 保証期限を計算したい
  • ログ削除基準日を求めたい

といった日付計算が頻繁に発生します。

Access VBAの日付計算はDateAdd関数を覚えることでほとんど対応できます。

実際の業務システムでは、

請求管理

売上管理

在庫管理

設備点検

ログ管理

契約管理

など、あらゆるシステムで利用される重要な関数です。

またCopilotが生成するVBAコードにも頻繁に登場するため、Access VBA開発者なら必須レベルの知識といえます。


スポンサーリンク

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開発者なら確実に習得しておきたい重要関数の一つです。

Access VBA逆引き大全 600の極意 Microsoft365/Office2024/2021/2019/2016対応 | E-Trainer.jp[中村峻] |本 | 通販 | Amazon
AmazonでE-Trainer.jp[中村峻]のAccess VBA逆引き大全 600の極意 Microsoft365/Office2024/2021/2019/2016対応。アマゾンならポイント還元本が多数。E-Trainer.jp[中…

コメント

タイトルとURLをコピーしました