VBA開発

翌月末日や翌20日を簡単に求めたい(DateSerial関数)

翌月末の日付(月の末日)を簡単に求めたい

請求書発行や入金予定リストなど、翌月末の月末日を知りたい事務職や経理職の方は多いと考えます。
DateSerial関数を使用する事で簡単に求める事が出来ます。

’■DateSerial関数で翌月末日を求める
Public Sub sample_vba_dateserial()

    '■処理タイミングの翌月末を取得 2020/09/03実行→2020/10/31
    MsgBox DateSerial(Year(Now), Month(Now) + 2, 0)

    '■指定した日の翌月末を取得
    Dim sDate As Date
    sDate = "2020/10/01"
    
    '■翌月末日を取得 2020/11/30
    MsgBox DateSerial(Year(sDate), Month(sDate) + 2, 0)

    '■翌々月末日を取得 2020/12/31
    MsgBox DateSerial(Year(sDate), Month(sDate) + 3, 0)

    '■翌20日を取得 2020/11/20
    MsgBox DateSerial(Year(sDate), Month(sDate) + 1, 20)
End Sub

 

まとめ

DateSerial関数自体は別途こちらの記事を参照ください。こちらのページではお伝えしません。
本ページでは月末日の算出方法を説明します。

翌月末日
DateSerial(Year(sDate), Month(sDate) + 2, 0)と
Monthの部分を「Month(sDate) +2 翌々月を求め、
Dayの部分を「0と指定する事で前月末日を求めます。
翌月20日
DateSerial(Year(sDate), Month(sDate) + 1, 20)と
Monthの部分を「Month(sDate) + 1翌月を求め、
Dayの部分を「20と指定する事で20日を求めます。
翌月末の日付を算出するのは「翌々月を出して、そこから前月末日を出す形」なので少しクセがあります。
事務職では、請求書や支払予定日など重宝するマクロのコードではないかと思います。

付録

月末日の一覧表をまとめてます。
小学生の頃に「西向く士(にしむくさむらい)」で覚えましたよね。

月末日備考
1月31
2月28閏年は29日
3月31
4月30
5月31
6月30
7月31
8月31
9月30
10月31
11月30
12月31

コメント

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