「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」です。
- Older:YMM4のクリッピングの使い方
Home » エクセルマクロ・Excel VBAの使い方 » VBA関数 » VBAの「Month(DateSerial(Year(Now), Month(Now), 0))」の意味
『インストラクターのネタ帳』では、2003年10月からMicrosoft Officeの使い方などを紹介し続けています。










