Home » エクセルマクロ・Excel VBAの使い方 » VBAで変数に格納されている日付データを操作する-DateSerial関数

VBAで変数に格納されている日付データを操作する-DateSerial関数

動作検証バージョン:64bit Windows 10 Pro + 32bit Excel(バージョン2207 ビルド15427.20210 Microsoft Store)

「マクロ 変数に入っている日付型 月日のみ変更するには」
といった検索キーワードでアクセスがありました。

VBAで「変数に入っている日付型 月日のみ変更」したいのであれば、DateSerial関数を使う方法をマスターしましょう。

VBAで、拙著『いちばんやさしいExcel VBAの教本』等で多用しているローカルウィンドウを使って、変数の中身を目視確認しながらステップ実行することをおすすめします。

[スポンサードリンク]

変数に格納されている日付データを操作するSubプロシージャ

以下のようなSubプロシージャを用意し、ステップ実行です。

Sub 変数に格納されている日付を操作する()
 Dim dtm As Date
 dtm = DateSerial(2022, 12, 31)

 dtm = DateSerial(Year(dtm), Month(dtm), Day(dtm) - 1)
 dtm = DateSerial(Year(dtm), Month(dtm) - 1, Day(dtm))
 dtm = DateSerial(Year(dtm), Month(dtm) + 1, Day(dtm) + 1)
 dtm = DateSerial(Year(dtm), 9, 13)
 dtm = DateSerial(Year(dtm) - 1, Month(dtm), Day(dtm))
End Sub

Date型で宣言した変数dtmに「2022年12月31日」を表す日付データを格納しておいてから、

Dim dtm As Date
dtm = DateSerial(2022, 12, 31)

変数dtmに格納されているデータを変更するだけのSubプロシージャです。

ローカルウィンドウを使って日付データを操作する様子を確認しよう

まず、

dtm = DateSerial(2022, 12, 31)

まで実行すると、変数dtmには下図のとおり日付データ #2022/12/31# が格納されます。

VBAの、Year関数・Month関数・Day関数の引数に日付データを指定すると、年・月・日を表す整数値をそれぞれ取得できます。

変数dtmに「2022年12月31日」を表す日付が格納されているとき
 Year(dtm)は「2022」
 Month(dtm)は「12」
 Day(dtm)は「31」
をそれぞれ返します。

ですから、

dtm = DateSerial(Year(dtm), Month(dtm), Day(dtm) - 1)

まで実行すると、変数dtmには、日が「- 1」された日付 #2022/12/30# が格納されます。

次の、

dtm = DateSerial(Year(dtm), Month(dtm) - 1, Day(dtm))

まで実行すると、変数dtmには、#2022/12/30# から月が「- 1」された #2022/11/30# が格納されます。

つづく、

dtm = DateSerial(Year(dtm), Month(dtm) + 1, Day(dtm) + 1)

を実行すると、#2022/11/30# の月と日がそれぞれ「+ 1」されて、#2022/12/31# になります。

ここまでは、Year関数・Month関数・Day関数を使ってきましたが、DateSerial関数の引数にはもちろん整数を直接指定できます。

dtm = DateSerial(Year(dtm), 9, 13)

を実行すると #2022/09/13# になります。

最後に、

dtm = DateSerial(Year(dtm) - 1, Month(dtm), Day(dtm))

を実行すると、#2022/09/13# から年が「- 1」された #2021/09/13# になります。

最終更新日時:2022-09-13 15:43

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » VBAで変数に格納されている日付データを操作する-DateSerial関数

「エクセルマクロ・Excel VBAの使い方」の記事一覧

検索


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

.