プログラミング的な概念をどの言語で学習するかに関わらず、月末や月初の日付を求める考え方は、早めに理解しておくほうがイイでしょう。
「dateserial 当月末日を求める」
といった検索で、このサイト『インストラクターのネタ帳』へアクセスがありました。VBAのDateSerial関数を使って月末の日にちを取得するには、どうすればいいのかを探していらした方による検索キーワードです。
DateSerialで当月末日を求めるサンプル
以下のSubプロシージャを実行すると、実行した月の末日がメッセージボックスに表示されます。
MsgBox _
DateSerial(Year(Now), Month(Now) + 1, 0)
End Sub
DateSerial関数の第1引数には、実行している日の年を表す数値を指定するため「Year(Now)」を、第2引数には実行日の翌月を表す数値を指定するため「Month(Now) + 1」を、第3引数には「0」を指定しています。
イミディエイトウィンドウで日付系関数を確認しましょう
このような日付の計算に慣れていない方は、イミディエイトウィンドウで、日付系関数の挙動を確認しましょう。
Now・Year・Month関数の確認
2021年の7月中に操作している場合、イミディエイトウィンドウに
? Year(Now)
と入力して[Enter]キーを押せば、Now関数で取得した今の、年月日時刻から年を表す数値「2021」が出力されます。つづいて、
? Month(Now)
と入力して[Enter]キーを押せば、Now関数で取得した今の、年月日時刻から月を表す数値「7」が出力されます。
もちろん「Month(Now)」に足し算を行って、
? Month(Now)+1
と入力して[Enter]キーを押せば「8」が出力されます。
DateSerialの確認
DateSerial関数の基本的な挙動も確認しましょう。
? DateSerial(2021, 7+1, 1)
と入力して[Enter]キーを押せば「2021/08/01」が出力されます。つづいて
? DateSerial(2021, 7+1, 0)
と入力して[Enter]キーを押せば、2021年8月0日に該当する「2021/07/31」が出力されます。
ここで「2021」「7+1」を手入力していますが、これを先ほど確認したNow・Year・Month関数を使っているのが、
DateSerial(Year(Now), Month(Now) + 1, 0)
です。
DateSerialの第2引数に「13」を
年が、「2021」から「2022」のように、変更になる場合に正しい結果が得られるのか気になる方もいらっしゃるかもしれません。
DateSerial関数の第2引数に「13」を入力して試してみましょう。
? DateSerial(2021, 13, 0)
と入力して[Enter]キーを押せば、2021年の13月0日に該当する「2021/12/31」が出力されます。
最終更新日時:2021-07-19 14:18
Home » エクセルマクロ・Excel VBAの使い方 » VBA関数 » DateSerial関数で当月末日を