VBAのCDate関数:値をDate型(日付型)に変換する方法

VBAのCDate関数は、数値や文字列を Date型(日付型) に変換するための関数です。
日付を扱うときに型を統一したり、文字列から正しく日付データを取得したりするのに役立ちます。


1. CDateの基本構文

Dim dt As Date
dt = CDate(値)

「値」 に指定したデータを Date型(日付データ) に変換します。


2. CDateの特徴

  • 日付形式の文字列をDate型に変換できる
  • シリアル値(数値)をDate型に変換できる
  • 時間情報を含む場合も正しく変換できる
  • 変換できない値を渡すとエラーが発生する
  • 環境(Windowsの地域設定)によって解釈が変わることがある

3. CDateの使用例

① 文字列をDate型に変換

Dim dt As Date
dt = CDate("2025/02/25") '2025年2月25日に変換
MsgBox dt

"YYYY/MM/DD" の形式なら、ほぼ確実に変換可能!

dt = CDate("25-Feb-2025")  '2025年2月25日に変換
MsgBox dt

"日付 月 西暦" のような形式も変換できる!(ただし環境による)

dt = CDate("2025-02-25 15:30:00")  '2025年2月25日 15時30分
MsgBox dt

時間を含む文字列 も問題なく変換できる!

② 数値をDate型に変換(シリアル値)

Dim dt As Date
dt = CDate(45200) '2023年11月20日に変換(Excelの日付シリアル値)
MsgBox dt

👉 整数値は1900年1月1日を基準としたシリアル値として解釈される!

dt = CDate(45200.75)  '2023年11月20日 18時(0.75 = 18:00)
MsgBox dt

小数部分は時間情報として扱われる!(0.5なら12:00)

③ 変換できない値を渡すとエラー

Dim dt As Date
dt = CDate("hello") 'エラー発生(無効な日付)

日付として解釈できない文字列はエラーになるので注意!


4. CDateを使う場面

  • テキストデータとして入力された日付を、Date型に統一したいとき
  • Excelシートから取得した日付文字列を正しく扱いたいとき
  • 数値データを日付・時間として解釈したいとき

5. まとめ

  • CDate は 文字列や数値をDate型(日付型)に変換する関数
  • 日付形式の文字列はほぼ問題なく変換できるが、環境に依存することもある
  • 整数値は日付、少数部分は時間として解釈される(シリアル値)
  • 日付として解釈できない値を渡すとエラーになる

データの型を統一し、日付計算やフォーマットを正しく行うために、CDate を活用しましょう!

コメント

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