文字列を日付型に変換する、DateValue関数の使い方を解説します。
基本形
DateValue(日付と判定できる文字列)
実行例
' 文字列をDate型に DateValue("2025/6/13") ' = #2025/6/13# DateValue("令和7年6月13日") ' = #2025/6/13# DateValue("6/13") ' = #2025/6/13# DateValue("6/13/2025 14:30") ' = #2025/6/13 14:30:00# DateValue("1000/1/1") ' = #1000/01/01# DateValue("2025/12/32") ' 「型が一致しません」エラー ' シリアル値には実行不可 DateValue(45000) ' 「型が一致しません」エラー DateValue(45000.5) ' 「型が一致しません」エラー
解説
DateValue関数は日付と判定できる文字列を日付型(Date型)に変換する関数です。
シート関数の「DATEVALUE関数」とほぼ同じ仕様の関数で、
シート関数同様、シリアル値を日付型にすることはできません。
シリアル値を日付型に変換する場合はCDate関数を使用してください。
シート関数と異なる点は、負の値(1900/1/1以前の日付)を扱える点です。
これ以前の日付はワークシートでは扱えませんので、
シート上は文字列などにしておき、VBAで処理をすることになります。
DateValue関数は一見便利そうな関数なのですが、
実はVBAではこの関数を使用しなくても以下のコードで同じことができます。
Dim 日付 As Date 日付 = "2025/6/13" ' #2025/6/13#が代入されます。 日付 = "令和7年6月13日" ' #2025/6/13#が代入されます。 日付 = 45000 ' #2023/3/15#が代入されます。
ExcelVBAは暗黙の型変換を行ってくれる言語のため、
Date型の変数に代入しても自動でDateValueと同じ変換が実行されます。
加えて、暗黙の型変換はシリアル値⇒日付にも対応していますね。
日付を扱う際はしっかり変数に入れた方が読みやすいコードになるため、
この関数を使うよりは、Date型の変数を用意することを先に検討してください。
ただし、暗黙の型変換と結果が異なる点として、
DateValue関数は時刻を切り捨てします。
日時の文字列から年月日だけを取り出したいときは、
DateValue関数を使用してください。