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
を活用しましょう!
コメント