Home » エクセルマクロ・Excel VBAの使い方 » VBA関数 » VBAの「Month(DateSerial(Year(Now), Month(Now), 0))」の意味

VBAの「Month(DateSerial(Year(Now), Month(Now), 0))」の意味

動作検証バージョン:Windows 11 Home + 64bit Excel バージョン 2605(ビルド20026.20182クイック実行)

「vba month(dateserial(year(now), month(now), 0)) 」
といった検索キーワードでアクセスがありました。

以下のようなコードをどこかでご覧になった方が、

 Dim ret As Long
 ret = Month(DateSerial(Year(Now), Month(Now), 0))

「Month(DateSerial(Year(Now), Month(Now), 0))」
の意味を調べていらしたのでしょう。

[スポンサードリンク]

Month(DateSerial(Year(Now), Month(Now), 0)) とは

結論からお伝えすると、
「Month(DateSerial(Year(Now), Month(Now), 0))」
は、前月の月を表す数値を取得する式です。

前月の月を表す数値を取得するには、2月から12月に実行したときには、
「Month(Now) - 1」
でいけるのですが、1月中に
「Month(Now) - 1」
を実行したときには、「0」が返されてしまいます。

これを回避するために、
「Month(DateSerial(Year(Now), Month(Now), 0))」
としています。

2026年1月に実行した場合

例えば、2026年1月中に、
「Month(DateSerial(Year(Now), Month(Now), 0))」
を実行した場合、
Year(Now) で「2026」
Month(Now) で「1」
が取得できます。

ということは
DateSerial(Year(Now), Month(Now), 0) は
DateSerial(2026, 1, 0) ということになり、
2025年12月31日を表すシリアル値を取得していることになります。

Month(DateSerial(2025, 12, 31))
は、もちろん「12」です。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » VBA関数 » VBAの「Month(DateSerial(Year(Now), Month(Now), 0))」の意味

「VBA関数」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.