【VBA】DateTime.DaysInMonthの代替

ネコニウム研究所

PCを利用したモノづくりに関連する情報や超個人的なナレッジを掲載するブログ

【VBA】DateTime.DaysInMonthの代替

2021-12-27 |

VBAでDateTime.DaysInMonth的に月の日数を取得したい!可及的速やかに!

手順書

下記のような感じでVBAでも指定の月の日数を取得するにはどうすればいいのか。

Dim days As Integer
days = DateTime.DaysInMonth(2021, 12)

こうするんだよお!(勢い任せ)

Dim days As Integer
days = Day(DateSerial(2021, 12 + 1, 0))

解説

DateSerial関数の第2引数で月を設定する際に+1しといて、翌月を設定する。第3引数を0に設定することで1の前日、つまり前月月末のシリアル値を取得できる。
Day関数でDateSerial関数の戻り値のシリアル値から日を取得する。

感想文(まとめ)

System.Datetimeオブジェクトを取得してDateTime.DaysInMonthを使ってやろうとしてけど上手くできなかった。できなかったし、前述のやり方の方がコードも短くVBA的にはスマートっぽい。

月の日数を取得してごにょごにょしたい人は使ってみても良いかもね!