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