日付に関連して、Excelのご質問をいただくことがよくあります。
例えば、
「翌月の1日の日付データを表示するには?」
というご質問は、Excelでも、VBA(Visual Basic for Applications)でもいただきます。
このサイト・インストラクターのネタ帳のアクセスログにも
「excel vba 翌月 月初日」
「エクセル マクロ 翌月1日を設定」
といった検索キーワードが見られます。
翌月1日を取得するサンプルマクロ
以下のSubプロシージャを実行すると、実行した日の、翌月の1日が、メッセージボックスに表示されます。
MsgBox _
DateSerial(Year(Now), Month(Now) + 1, 1)
End Sub
日付計算の基本
考え方はワークシート上での日付計算と同じです。
Excelのワークシート上で、翌月の1日を取得する場合、
=DATE(YEAR(TODAY()), MONTH(TODAY())+1, 1)
という数式にするのと同じです。
VBAの場合Year関数の引数にNow関数を指定すれば、今現在の日時から年を表す数字が取得できます。
DateSerial(Year(Now) , Month(Now) + 1, 1)
Excelの場合にYEAR関数の引数にTODAY関数を指定すれば、今日の日付から年を表す数字が取得できるのと同じ考え方です。
DATE(YEAR(TODAY()), MONTH(TODAY())+1, 1)
VBAの場合Month関数の引数にNow関数を指定すれば、今現在の日時から月を表す数字が取得できます。
DateSerial(Year(Now), Month(Now) + 1, 1)
Excelの場合にMONTH関数の引数にTODAY関数を指定すれば、今日の日付から月を表す数字が取得できるのと同じ考え方です。
DATE(YEAR(TODAY()), MONTH(TODAY())+1, 1)
翌月の1日を取得するために、Month関数・MONTH関数で返された、月の数字に「+1」するのも同じ考え方です。
DateSerial(Year(Now), Month(Now) + 1, 1)
DATE(YEAR(TODAY()), MONTH(TODAY())+1, 1)
年・月・日を表す数字を日付データにするために、VBAではDateSerial関数を使い、
DateSerial(Year(Now), Month(Now) + 1, 1)
Excelの場合にはDATE関数を利用しますが、考え方はやっぱり同じです。
DATE(YEAR(TODAY()), MONTH(TODAY())+1, 1)
最終更新日時:2023-07-31 16:57
Home » エクセルマクロ・Excel VBAの使い方 » VBA関数 » VBAで翌月1日を取得する-DateSerial・Now・Year・Month