【Excel VBA】日付の計算 – DateSerial関数

Excel マクロ(VBA)

前回はExcel VBAで今日の日付を取得する方法を紹介しました。今回はその続きとして、”来月”とか、”今月の最終日”など、日付の計算を実行する方法を紹介します。前回の記事は以下から参照ください。

【Excel VBA】今日の日付を入力 - Date関数
今回はExcel VBAで今日の日付を取得する方法を解説します。
スポンサーリンク

DateSerial関数

日付の計算を実行したい場合は、DateSerial関数を使用します。使い方は以下の通りで、それぞれyear, month, dayには日付データではなくて整数のデータ(Integer型)を設定します。

DateSerial(year, month, day)

例えば以下のようにコードを記述することで、B2セルに”2021/4/9″と入力することができます。

Cells(2, 2) = DateSerial(2021, 4, 9)

前回の記事で紹介した通り、Year関数、Month関数、Day関数は、それぞれ()内の引数に応じて、結果を整数で返します。それを利用して、以下ではB3セルに”今日の日付”を入力させます。

Cells(3, 2) = DateSerial(Year(Date), Month(Date), Day(Date))

このコード自体は Cells(3,2) = Date と同じことをしているだけですので使う場面がありませんが、以下で説明するように、これを使うことで日付の計算を実行できます。

スポンサーリンク

DateSerial関数の使い方

それでは、DateSerial関数を使って実際にさまざまな日付の計算を実行してみます。

年だけ、月だけ、日だけの操作

来年の今日

月日は同じで、年だけ+1したい時は、以下のようにYear(Date)に値を加えます。

Cells(4, 2) = DateSerial(Year(Date) + 1, Month(Date), Day(Date))

もちろん引き算の場合にはマイナスします。

来月の今日

年と日は同じで、月だけ+1したい時は、以下のようにMonth(Date)に値を加えます。

Cells(5, 2) = DateSerial(Year(Date), Month(Date) + 1, Day(Date))

もちろん引き算の場合にはマイナスします。

明日

年月は同じで、日だけ+1したい時は、以下のようにDay(Date)に値を加えます。

Cells(6, 2) = DateSerial(Year(Date), Month(Date), Day(Date) + 1)

もちろん引き算の場合にはマイナスします。

月の最終日

少し特殊な使い方として、”月の最終日”の取得方法を紹介します。最終日は月によって異なる為、数値で指定ができません。2月であれば”28″または”29″、3月であれば”31″、4月であれば”30″です。そういった場合、DateSerial関数の引数Dayに0を入力することで”前月の最終日”を指定できます。具体的な使い方を紹介します。

前月の最終日

以下のように、Dayを0とし、他は今日の日付を参照することで、前月の最終日を取得できます。

Cells(7, 2) = DateSerial(Year(Date), Month(Date), 0)

来月の最終日

前月の最終日の取得方法を応用して、来月の最終日は以下のように取得できます。Monthは+1ではなく+2になることに注意してください。

Cells(8, 2) = DateSerial(Year(Date), Month(Date) + 2, 0)

コメント

タイトルとURLをコピーしました