【ExcelVBA・マクロ】DateSerialの使い方|年・月・日から日付を作成する方法【コピペOK】

DateSerialの使い方 ExcelVBA

VBAで日付を扱うとき、次のようなことはありませんか?

  • 年・月・日を指定して日付を作りたい
  • 月末日を取得したい
  • 日付計算を柔軟に行いたい

このような場合は、DateSerial関数を使うことで簡単に解決できます。
年・月・日を指定して日付を生成できるため、日付計算の基本となる重要な関数です。

この記事では、DateSerialの基本から実務で使える応用までを初心者向けに分かりやすく解説します。


スポンサーリンク
スポンサーリンク

この記事でできること

  • 年・月・日から日付を作成できる
  • 月末日を取得できる
  • 日付の計算が簡単にできる
  • 実務で使えるパターンが分かる

基本:DateSerial関数の使い方

基本構文はこちらです。

DateSerial(年, 月, 日)

例:

MsgBox DateSerial(2024, 1, 1)

→ 2024/01/01 が表示されます。


DateSerialのポイント

  • 日付型(Date型)として返される
  • 年・月・日を個別に指定できる
  • 範囲外の値も自動調整される(重要)

変数を使った例

Dim y As Long
Dim m As Long
Dim d As Long

y = 2024
m = 5
d = 10

MsgBox DateSerial(y, m, d)

セルの値から日付を作成する

Dim dt As Date

dt = DateSerial(Range("A1").Value, Range("B1").Value, Range("C1").Value)

MsgBox dt

A1=年、B1=月、C1=日として日付を作成できます。


月末日を取得する方法(超重要)

DateSerialは「翌月の0日」を指定することで月末日を取得できます。

Dim lastDay As Date

lastDay = DateSerial(2024, 2 + 1, 0)

MsgBox lastDay

→ 2024/02/29(うるう年)

ポイント:

  • 月 + 1 → 翌月
  • 日 = 0 → 前月の最終日

日付の加算・減算

DateSerialは日付計算にも便利です。

1ヶ月後

DateSerial(Year(Date), Month(Date) + 1, Day(Date))

1日前

DateSerial(Year(Date), Month(Date), Day(Date) - 1)

範囲外の値が使える仕組み

DateSerialは、範囲外の値も自動調整されます。

DateSerial(2024, 13, 1)

→ 2025/01/01

DateSerial(2024, 1, 0)

→ 2023/12/31

この仕様を利用すると、日付計算が簡単になります。


実務でよく使うパターン

① 月初日を取得

DateSerial(Year(Date), Month(Date), 1)

② 月末日を取得

DateSerial(Year(Date), Month(Date) + 1, 0)

③ 指定月の開始日・終了日

Dim startDate As Date
Dim endDate As Date

startDate = DateSerial(2024, 5, 1)
endDate = DateSerial(2024, 5 + 1, 0)

Formatと組み合わせる

Format(DateSerial(2024, 1, 1), "yyyymmdd")

→ 20240101


よくあるエラーと対処法

① 型が一致しません

年・月・日は数値で指定してください。

② 意図しない日付になる

範囲外の値が自動補正されている可能性があります。

③ コードは正しいのにエラーになる

コピー時に全角文字や特殊文字が混ざることがあります。
その場合は該当行を手入力し直すと解決することがあります。


まとめ

  • DateSerialで日付を作成できる
  • 年・月・日を個別に指定可能
  • 月末取得や日付計算で大活躍
  • 範囲外補正を理解すると強力

DateSerialを使いこなせるようになると、日付処理の自由度が大きく向上します。
特に月末計算は実務で頻出なので、ぜひ覚えておきましょう。

スポンサーリンク
スポンサーリンク
ExcelVBA
いがぴをフォローする

コメント

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