【EXCEL VBA】月の最終日を取得したい

月の最終日を取得する方法です。色々と方法はありますが、DateSerial関数を利用するのが一番スマートなので紹介します。

DateSerial関数 を使って解決する

DataSerial関数の3番目の引数は日を指定します。よって1~31の数字を 通常は 指定します。しかし、0を指定すると「前月の末日 と見なす 」という特別な仕様がありますので、これを利用します。

サンプルプログラムを確認する(コピペOK)

Sub sample()
    Dim dt As Date
    
    dt = "2019/6/15"
    Debug.Print DateSerial(Year(dt), Month(dt) + 1, 0)      '2019/6/30
    
    dt = "2020/2/3"
    Debug.Print DateSerial(Year(dt), Month(dt) + 1, 0)      '2020/2/29

End Sub