VBA

月末、月初の日付の取得方法

記事内に商品プロモーションを含む場合があります

このページでわかること

月末、月初の日付を簡単にとることができます。

覚えること
  1. 月末を取得するためには
    例:2021年5月5日の日付から月末を取得する
    その翌月=2021年6月5日を取得(DateAdd関数)
    年(=2021:Year関数)と月(=6:Month関数)を取得
    年/月/1という形で日付を取得(2021/6/1)
    2021年6月1日の一日前=2021年5月の月末となる。

  2. 月初を取得するためには
    例:2021年5月5日の日付から月初を取得する
    その年(=2021:Year関数)と月(=5:Month関数)を取得
    年/月/1という形で日付を取得(2021/5/1)

  3. Month(日付) でその日付の月を数値で取得

  4. DateAdd(追加の単位 , 追加したい数値 , 日付)で特定の日付から加算したり、減算

こんにちは、hokkyokunです。
年月日の取得や表記は実務で多くあると思います。

特殊な年月日を取らなきゃいけない機会ってありますよね。

例えば、月末、月初、年度、第一営業日、最終営業日!

変換するのも結構面倒で間違いやすい作業ですよね。

マクロ使って自動化しちゃいましょう。
ここでは月末と月初の取扱方法についてご紹介します。

月末の取得方法

これ以外にも回答あるかもですが・・・
私の使っている方法です。

考え方は

  • 特定の日付から月を取得(Month関数を使用)
  • その月に一ヶ月加算=翌月を取る(DateAdd関数を使用)
  • その翌月の1日の一日前=月末(DateAdd関数を使用)

具体的に言うと
2021年5月5日の日付から月末を取得したい場合

  • その翌月=2021年6月5日を取得
  • その年(=2021:Year関数)と月(=6:Month関数)を取得
  • 年/月/1という形で日付を取得(2021/6/1)
  • 2021年6月1日の一日前=2021年5月の月末となる。

Month関数とDateAdd関数は別の記事でご紹介しますが、
簡単に言うと

Month(日付)でその日付の月を取得できます。
例えば:Month(#5/5/2021#)で 「5」 を取得することが出来ます。
DateAdd(追加の単位 , 追加したい数値 , 日付)で特定の日付から加算したり、減算したりできます。
例えば:DateAdd("m", 1, #5/5/2021#) で2021年5月5日から「月」の単位を「1」加算した値が返されます。
すなわち 2021/6/5が返ってきます。

プロシージャはこんな感じです。

Sub 月末()

Dim myDate As Date '特定の日付
Dim nextMonth As Date '翌月の日
Dim nextMonth1stday As Date '翌月の日の一日
Dim endMonth As Date '目的の月末

myDate = #5/5/2021#
nextMonth = DateAdd("m", 1, myDate)
nextMonth1stday = Year(nextMonth) & "/" & Month(nextMonth) & "/" & 1
endMonth = DateAdd("d", -1, nextMonth1stday)

MsgBox ("月末は:" & endMonth)

End Sub

月初の取得方法

月末より簡単です。

  • 特定の日付の年と月を取得
  • 日付を1にして組み合わせる(年/月/1という形にする)

これも具体的に説明すると

2021年5月5日の日付から月初を取得したい場合

  • その年(=2021:Year関数)と月(=5:Month関数)を取得
  • 年/月/1という形で日付を取得(2021/5/1)
Sub 月初()

Dim myDate As Date '特定の日付
Dim fstDate As Date '月初

myDate = #5/5/2021#
fstDate = Year(myDate) & "/" & Month(myDate) & "/" & 1

MsgBox ("月初は:" & fstDate)

End Sub

まとめ

いかがでしょうか。

月末月初は日付操作の基本なので
覚えておいて損はないと思います。

次回は第一営業日(休みの日を除く)や最終営業日を取得してみたいと思います。