ACCESS VBAで翌月末を求める方法(VBAコード公開)

VBAで翌月末を求める方法

ACCESS VBAで請求処理などを行うと、翌月末の日付を計算で使用したときはないでしょうか。

そんな時には、翌月末を求められるVBAのプロシージャを作成しておくと便利です。

今回は、ACCESS VBAで翌月末を求める方法をご紹介します。


こんにちは。
はこにわガジェット (@hakoniwagadget) です。

ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは基本機能だけでも十分便利ですが、VBAを使うことで格段に使いやすいデータベースを作成可能です。
この記事ではACCESSでのVBAの使い方をご紹介していきます。

完成形

翌月初を求める処理は、VBAの中で使用されることが多いため、引数に指定した日付の翌月末の日付を返すFunctionプロシージャを作成しました。

Public Function yokugetsu_matsu(x As Date) As Date

です。

例えば、

yokugetsu_matsu(#2022/02/16#)

と入力して実行すると、okugetsu_syoに2022/03/31の値が入って返されます。

メッセージボックスに日付を出したい場合は、



Public Sub hiduke_yobidashi()

    MsgBox "翌月末:" & yokugetsu_matsu(Date)

End Sub

で実行すると、下記のように表示されます。

翌月末を求めるプロシージャ

それでは、翌月末を求めるプロシージャを紹介します。


Public Function yokugetsu_matsu(x As Date) As Date

Dim daycount As Date
daycount = x

Do While Format(DateAdd("m", 1, x), "yyyymm") >= Format(daycount, "yyyymm")

    daycount = DateAdd("d", 1, daycount)

Loop

yokugetsu_matsu = daycount - 1

End Function

以下、解説します。

まず、引数としてDate型のxを指定しています。

これが、計算のもとになる、翌月末を求めたい対象の日付です。

そして、daycountという変数にxを代入します。

その後、Do Whileを使ってdaycountに対するループ処理をします。

これは、daycountに格納されている日付を、元のxに1ヵ月を足した日より、daycountの年月が大きくなるまで1日ずつ増やしていく、という処理です。

x+1の年月と異なったタイミングでこの処理が止まりますので、その時点でdaycountに格納されているのは翌々月の1日になる、ということです。

ここを月だけで比較しないのは、xが12月だった場合に1を足すと1月になって値が小さくなってしまうからです。

最後にyokugetsu_matsuにdaycountから1を引いた日付の値を格納して終わりです。

今回は翌月末でしたが、前月末や翌月初を求めたい場合は以下の記事もご参照ください。

VBAで前月末を求める方法
VBAで翌月初を求める方法

以上、VBAで翌月末を求める方法でした。


ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。

そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。

ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

サービス一覧

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