【VBA入門】年・月・日から日付を作成する方法|DateSerial関数の使い方

Excel VBAでは、ユーザーが入力した「年」「月」「日」それぞれの数値をもとに、正確な**日付値(Date型)**を構築することができます。
特に、フォームや入力表で年月日を分けて入力させる場面では、この処理が不可欠です。

本記事では、DateSerial 関数を使って、年・月・日から1つの日付を作成する方法を丁寧にご紹介いたします。


目次

使用する関数:DateSerialとは?

DateSerial(year, month, day) は、指定された「年・月・日」の整数値から、正確な日付(Date 型)を返すVBA関数です。

たとえば、

DateSerial(2025, 7, 20)

と書けば、結果は "2025/7/20"Date 型の値となります。


VBAコード例:セルの年・月・日から日付を作成

Sub CreateDateFromParts()
    Dim assembledDate As Date
    assembledDate = DateSerial(Range("E2").Value, Range("F2").Value, Range("G2").Value)
    
    MsgBox "作成された日付は:" & assembledDate
End Sub

補足:

  • Range("E2").Value:年(たとえば2025)
  • Range("F2").Value:月(たとえば7)
  • Range("G2").Value:日(たとえば20)
  • 3つの値が揃っていることが前提です。未入力や不正な値には注意が必要です。

エラー対策:入力値の妥当性チェック

現場では「日付が不正」でエラーになることがあります。たとえば「2025年2月30日」など。
以下のように IsDate を使って日付の妥当性を事前に確認することも重要です。

If IsDate(DateSerial(Range("E2").Value, Range("F2").Value, Range("G2").Value)) Then
    ' 正常な日付
Else
    MsgBox "日付が正しくありません。入力を確認してください。"
End If

応用例:作成した日付をセルに入力する

Range("H2").Value = assembledDate

上記のようにすれば、計算結果の日付を別セルに出力できます。データの整形や日付付きの記録などに応用可能です。


まとめ|年・月・日からの組み立ては DateSerial が最適

Excel VBAでは、DateSerial 関数を用いることで、年・月・日を部品として受け取り、正確な日付値に変換することができます。

  • 年・月・日が別々に入力されているときに特に便利
  • 自動的に日付型として扱われ、大小比較や日数計算にも利用可能
  • 不正な値に対しては IsDate で事前チェックを行うとより安全

日付処理はVBAの基本でもあり、同時にエラーが発生しやすいポイントでもあります。
意図した形式で日付を扱えるようにすることで、より信頼性の高いマクロ処理を実現しましょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次