ACCESS VBAで請求処理などを行うと、翌月末日の日付を計算で使用したときはないでしょうか。
そんな時には、翌月末を求められるVBAのプロシージャを作成しておくと便利です。
今回は、ACCESS VBAで翌月末日の日付を求める方法をご紹介します。
こんにちは。
はこにわガジェット (@hakoniwagadget) です。
ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは基本機能だけでも十分便利ですが、VBAを使うことで格段に使いやすいデータベースを作成可能です。
この記事ではACCESSでのVBAの使い方をご紹介していきます。
翌月末日の日付を返すファンクションプロシージャ
引数に指定した日付の翌月末日の日付を返すFunctionプロシージャをVBAで作成しました。
以下がその内容です。
Public Function yokugetsu_matsu(kijun_bi As Date) As Date
'■■■指定した日付の翌月末の日付を返す■■■
yokugetsu_matsu = DateAdd("d", -1, DateValue(Year(DateAdd("m", 2, kijun_bi)) & "/" & Month(DateAdd("m", 2, kijun_bi)) & "/01"))
End Function
例えば、
yokugetsu_matsu(#2026/01/11#)
と入力して実行すると、2026/2/28が返されます。
プロシージャの内容解説
それでは、内容を解説します。
このプロシージャでは以下の手順で翌月末日を計算しています。
まず、kijun_biという元となる日付を引数として入力します。
基準月の翌々月初日の日付を計算
最初に行うのは、基準日に指定した月の翌々月の初日(1日)の日付を計算することです。
この日付が計算できれば、そこから1日を引くことで翌月末日が計算できます。
DateValue(Year(DateAdd("m", 2, kijun_bi)) & "/" & Month(DateAdd("m", 2, kijun_bi)) & "/01")
基準月の翌々月初日は、Year関数とMonth関数で年、月を算出し、更に日を01に固定させた値をDateValue関数を使って日付型データに変換して作成します。
年の計算
年は以下で計算します。
Year(DateAdd("m", 2, kijun_bi)
DateAdd関数を使って”m”、つまり月を2ヵ月足した日付を出し、年をYear関数で抽出します。
月を2ヵ月足すことで年が変わる場合(例えば基準日が11月や12月の場合)にも対応できます。
月の計算
月は以下で計算します。
Month(DateAdd("m", 2, kijun_bi))
DateAdd関数を使って”m”、つまり月を2ヵ月足した日付を出し、月をMonth関数で抽出します。
基準日が11月や12月の場合に年をまたいで月の数値が減るケースにも対応できます。
日の計算
日は以下で固定しています。
"/01"
月初の日付は必ず1日なので、ここは固定で記載しています。
日付データの作成
上記で年、月、日のデータを個別に作成した上で、DateValueでこれらを合成して日付データを作成します。
年、月、日の間を/(スラッシュ)で区切っていくことでDateValue関数で日付型データに変換できます。
DateValue関数を使わないと日付型ではなく文字列型になってしまうので注意してください。
ここまでで基準月の翌々月初日の日付が計算できました。
基準月の翌々月初日から1日を引く
次に、先ほど求めた基準月の翌々月初日から1日を引きます。
ここでDateAdd関数を利用します。
DateAdd関数の引数に”d”を指定することで日単位を指定し、-1で1日を引きます。
これで翌月の末日が求められます。
フォームでの利用例
では、今回作成したプロシージャをフォームで利用してみましょう。
以下のフォームを作成しました。

フォーム上に基準日テキストボックスを作成し、更に基準日を参照する翌月末テキストボックスを作成しています。
翌月末テキストボックスのコントロールソースは以下の通りです。
=yokugetsu_matsu([基準日])
作成したFunctionプロシージャ「yokugetsu_matsu」を利用し、引数にフォーム上の基準日を指定しています。
フォームビューで結果を見てみましょう。

基準日に対して翌月末日の日付が正しく表示されています。
その他の日付の算出
今回は翌月末日でしたが、前月初日や前月末日、翌月初日を求めたい場合は以下の記事もご参照ください。



以上、ACCESS VBAで翌月末日の日付を求める方法をご紹介しました。
この記事の内容を実際に試したい方へ
本記事の内容を実際にACCESSを動かしながら確認したいという方向けに、記事で紹介した機能が実装されたサンプルファイルを販売しています。記事内で解説しているテーブル、クエリ、フォーム、レポート、VBAのプロシージャなどをそのまま動く形で実装しました。
学習用としてはもちろん、加工して自社業務に利用することも可能です。
ご興味のある方は以下からご覧ください。

ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。
そんな時は、ACCESS開発歴20年以上、過去に300以上のACCESSデータベースの開発・修正実績のあるはこにわガジェット(@hakoniwagadget)にお任せください。
ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

最後までお読みいただき、ありがとうございました。
