PR

Access VBA逆引き集|日付操作を自在に操る実践テクニックとCopilot活用術

VBA

Accessシステムを開発していると、

  • 今月末の日付を取得したい
  • 30日後の日付を計算したい
  • 稼働日数を算出したい
  • yyyy/mm形式で表示したい
  • 前月データだけ抽出したい
  • 年度を判定したい

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

Access開発では日付操作を理解するだけで業務システムの大半の計算処理に対応できます。

実際の業務では、

  • 業務実施記録
  • 棚卸管理
  • 売上集計
  • 勤怠管理
  • 精算日

など、ほぼ全てのシステムで日付処理が必要になります。

今回は実務で利用頻度の高い

  • Date
  • Now
  • DateAdd
  • DateDiff
  • Format
  • Year
  • Month
  • Day

を使った実践テクニックを紹介します。


スポンサーリンク

現在日付を取得したい

最も基本的な処理です。

Date

結果

2026/08/28

現在日付のみ取得できます。


現在日時を取得したい

時間まで必要な場合です。

Now()

結果

2026/08/28 14:30:15

ログ管理などで利用します。


システム日付をフォームへ初期表示したい

フォーム起動時です。

Me!実施日 = Date

入力の手間を削減できます。


7日後の日付を取得したい

DateAdd関数を利用します。

DateAdd("d",7,Date)

結果

2026/09/04


30日前の日付を取得したい

DateAdd("d",-30,Date)

結果

2026/07/29

検索条件でよく利用します。


1か月後の日付を取得したい

DateAdd(“m”,1,Date)

結果

2026/09/28

期限管理などで活躍します。


1年前の日付を取得したい

DateAdd("yyyy",-1,Date)

結果

2025/08/28

前年比較で利用します。


日付差を計算したい

DateDiff関数を利用します。

DateDiff("d",#2026/08/01#,#2026/08/28#)

結果

27

27日間と判定されます。


設備点検の経過日数を求めたい

DateDiff("d",最終点検日,Date)

結果

120日

点検期限管理に便利です。


年齢を計算したい

社員管理で利用します。

DateDiff("yyyy",生年月日,Date)

簡易的な年齢計算ができます。

ただし誕生日の考慮が必要な場合は別途調整しましょう。


年だけ取得したい

Year(Date)

結果

2026

年度計算の基本です。


月だけ取得したい

Month(Date)

結果

8

月次集計で利用します。


日だけ取得したい

Day(Date)

結果

28


曜日を取得したい

Weekday(Date)

結果

6

数値で取得されます。


曜日名を表示したい

Format(Date,"aaa")

結果


年月表示にしたい

非常によく利用します。

Format(Date,"yyyy/mm")

結果

2026/08

月次資料で定番です。


yyyymm形式へ変換したい

ファイル名生成で利用します。

Format(Date,"yyyymm")

結果

202608


yyyymmdd形式へ変換したい

取込ファイル作成で利用します。

Format(Date,"yyyymmdd")

結果

20260828


時刻付き表示をしたい

Format(Now(),"yyyy/mm/dd hh:nn:ss")

結果

2026/08/28 14:30:15

ログ出力では定番です。


月初日を取得したい

かなり実務で使います。

DateSerial(Year(Date),Month(Date),1)

結果

2026/08/01

月次集計で利用します。


月末日を取得したい

Access開発者必須テクニックです。

DateSerial(Year(Date),Month(Date)+1,0)

結果

2026/08/31


前月末日を取得したい

DateSerial(Year(Date),Month(Date),0)

結果

2026/07/31

売上締め処理でよく利用します。


当月データだけ抽出したい

クエリ条件です。

Between

DateSerial(Year(Date()),Month(Date()),1)

And

DateSerial(Year(Date()),Month(Date())+1,0)

月次集計の定番です。


年度を判定したい

4月始まりの場合です。

If Month(Date) >= 4 Then

年度 = Year(Date)

Else

年度 = Year(Date)-1

End If

官公庁や製造業でよく利用します。


実務活用例① 記録管理

期限管理です。

DateDiff("d",実施日,Date)

経過日数を表示できます。

一定期間を超えた場合に警告表示も可能です。


実務活用例② 設備点検システム

次回点検日を自動計算します。

DateAdd("m",6,点検日)

半年後の点検予定日を自動設定できます。


実務活用例③ 月次報告書作成

ファイル名自動生成です。

"月次報告書_" & Format(Date,"yyyymm") & ".pdf"

結果

月次報告書_202608.pdf

PDF出力との相性も抜群です。


実務活用例④ CSV取込履歴管理

ログ出力です。

CurrentDb.Execute _

"INSERT INTO T_LOG(取込日時) " & _

"VALUES(#" & Format(Now(),"yyyy/mm/dd hh:nn:ss") & "#)"

取込履歴を管理できます。


Copilot活用術① 月末取得コード生成

Copilotへ依頼します。

Access VBAです。

今月末日を取得する方法と

使用例を教えてください。

複数パターンを確認できます。


Copilot活用術② 年度管理ロジック作成

Access VBAです。

4月始まりの年度を自動判定する

関数を作成してください。

すぐにサンプルコードを生成できます。


Copilot活用術③ 日付計算の検証

DateAdd関数で

2026/01/31に1か月加算した場合

どうなりますか。

特殊ケースの確認ができます。


Access開発者が最も使う日付関数ベスト5

実務頻度でいうと次の順です。

1位 Format

表示変更

2位 DateAdd

加算・減算

3位 DateDiff

経過日数計算

4位 Date

現在日付取得

5位 DateSerial

月初・月末取得

この5つだけでもかなりの業務処理を作成できます。


日付操作で失敗しないポイント

日付型で保存する

おすすめ

2026/08/28

日付型

避けたい例

20260828

文字列型

計算や検索が難しくなります。

表示はFormatで行う

データを加工するのではなく、

Format(日付,"yyyy/mm")

などで表示側を調整しましょう。

月末計算はDateSerialを使う

月ごとの日数を意識する必要がなくなります。


まとめ

Access VBAの日付処理を理解すると、

  • 期限管理
  • 保守管理
  • 月次集計
  • 年度管理
  • 履歴管理
  • ログ管理

などの業務システムを効率的に構築できます。

特に実務で覚えておきたいのは、

  • Date
  • Now
  • Format
  • DateAdd
  • DateDiff
  • DateSerial

の6つです。

また、Copilotを活用することで複雑な日付計算ロジックや年度判定処理も短時間で作成できます。

Access開発では文字列処理と並んで利用頻度が高いテーマですので、ぜひ覚えておきたい実践テクニックです。

コメント

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