0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Excel VBA】CDate関数|文字列や数値を日付(Date)型に変換する方法と注意点

0
Last updated at Posted at 2025-07-18

この記事ではCDate関数の使い方と注意点について解説します。
他のよく使うVBA関数一覧はこちら。

CDate関数の使い方と注意点

CDate関数は、指定した値を日付型(Date型)に変換する関数です。
文字列・数値などを日付/時刻として扱いたいときに使用します。

構文

CDate()
  • : 日付または時刻に変換したい値(文字列・数値・時刻など)
  • 戻り値 : 指定された式を日付(Date型)に変換した結果

使用例

日付文字列をDate型に変換する

Sub Sample()
    Dim Mystring As String
    Mystring = "07/15/2025"
    
    Debug.Print Mystring
    Debug.Print TypeName(Mystring)
    
    Debug.Print CDate(Mystring)
    Debug.Print TypeName(CDate(Mystring))
End Sub

▶ 出力結果

07/15/2025
String
2025/07/15 
Date

日付と時刻を含む文字列を変換する

Sub Sample()
    Debug.Print CDate("2025/07/15 13:30")
End Sub

▶ 出力結果

2025/07/15 13:30:00 

数値から日付に変換(シリアル値)

Sub Sample()
    Debug.Print CDate(45123)
End Sub

▶ 出力結果
(※1900年1月1日を「1」としたシリアル値として扱われる)

2023/07/16 

ExcelやVBAでは、整数値は「1900/1/1」を起点とした連番の日付として扱われます(シリアル値)。
たとえば 1 → 1900/1/1、2 → 1900/1/2、…、45123 → 2023/7/16 となります。

⚠️注意

変換できない形式を渡すとエラーになる

Sub Sample()
    On Error Resume Next

    Err.Clear
    Debug.Print CDate("15.07.2025") ' 区切り文字が不正
    If Err.Number <> 0 Then Debug.Print "エラー:" & Err.Description

    Err.Clear
    Debug.Print CDate("明日") ' 自然言語は無効
    If Err.Number <> 0 Then Debug.Print "エラー:" & Err.Description

    Err.Clear
    Debug.Print CDate("2025/13/01") ' 存在しない月
    If Err.Number <> 0 Then Debug.Print "エラー:" & Err.Description

    On Error GoTo 0
End Sub

▶ 出力結果

エラー:型が一致しません。
エラー:型が一致しません。
エラー:型が一致しません。

上記ではエラー発生時にエラーを無視して次の処理を実行するよう記述していますが、
エラーを無視する記述が無い場合、エラー時に処理が止まってしまいます。
引数に渡す内容には注意しましょう。

文字列は「システムの地域設定」に依存して解釈される

Sub Sample()
    Debug.Print CDate("12/08/2025")
End Sub

▶ 出力結果(設定が「日本」の場合)

2025/12/08

▶ 出力結果(設定が「米国」の場合)

2025/08/12

意図しない日付になる可能性があるため、**明確な形式(例:"2025/08/12")**で指定するようにしましょう。

Emptyは0として扱われ「日付なしの午前0時」が返り、Nullを渡すとエラー

Sub Sample()
    On Error Resume Next
    Debug.Print CDate(Empty)

    Err.Clear
    Debug.Print CDate(Null)
    If Err.Number <> 0 Then Debug.Print "Null変換時のエラー:" & Err.Description
    On Error GoTo 0
End Sub

▶ 出力結果(設定が「日本」の場合)

0:00:00 
Null変換時のエラー:Null の使い方が不正です。

関連するVBA関数

その他のVBA関数

【Excel VBA】VBAでよく使う関数一覧&基本の使い方

参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?