当月の初日と最終日

久しぶりにExcel VBAで、当月の初日と最終日を求める場面があった。
f:id:Infoment:20200408223821j:plain

初日を求めるとき、昔はこんな風に書いていた。

Function FirstDay(source_date As Date) As Date
    FirstDay = DateSerial(Year(source_date), Month(source_date), 1)
End Function

この記述でも、全く問題ないと思う。でも、少し違う書き方をしてみたくなった。
例えば、こんな感じで。

Function FirstDay(source_date As Date) As Date
    FirstDay = Format(source_date, "yyyy/mm/01")
End Function

使用する文字数も少ないし、何より「おしゃれ」な感じがする。
よし、今後はこれで行こう。


ちなみに最終日は、こんな感じで。
初日を求めて、その翌月から1日引いている。

Function LastDay(source_date As Date) As Date
    LastDay = WorksheetFunction.EDate(FirstDay(source_date), 1) - 1
End Function

例えば、4/8 ⇒ 4/1 ⇒ 5/1の1日前 ⇒ 4/30 となる。

参考まで。