翌月末の日付(月の末日)を簡単に求めたい
請求書発行や入金予定リストなど、翌月末の月末日(未来日時)を知りたい事務職や経理職の方は多いと考えます。
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」と指定する事で前月末日を求めます。
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日を求めます。
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 |



コメント