更新日:、 作成日:
VBA FormatDateTime 関数:日付を Windows の形式で文字列に変換する
はじめに
Excel VBA マクロの FormatDateTime 関数から日付を Windows の形式で文字列に変換する方法を紹介します。
FormatDateTime 関数は、日時を地域に合った形式で文字列型 (String) に変換します。
日本なら 2000/01/02 のように 年/月/日 の形式に変換します。
アメリカなら 1/2/2000 のように 月/日/年 の形式に変換します。
VBA を実行しているパソコンがある地域に合った形式で、日付を文字列に変換したいときに使用します。
FormatDateTime 関数の引数と戻り値
FormatDateTime(日付)
日付を Windows の形式の文字列に変換します。
FormatDateTime(日付, 形式)
日付を指定した形式の文字列に変換します。
引数「日付」 | 日時を指定します。 |
引数「形式」 | 省略できます。日時の形式を指定します。 |
戻り値の型 | 文字列型 (String) |
引数「形式」
引数「日付」が 2000/1/2 3:4:5 で日本のとき。
書式 | 結果 | 説明 |
vbGeneralDate (既定) | 2000/01/02 3:04:05 | 日付と時刻の一方または両方を表示します。日付部分がある場合は「短い形式」として表示します。時刻部分がある場合は「長い形式」として表示します。 |
vbLongDate | 2000年1月2日 | 日付の「長い形式」を使用して日付を表示します。 |
vbShortDate | 2000/01/02 | 日付の「短い形式」を使用して日付を表示します。 |
vbLongTime | 3:04:05 | 時刻の「長い形式」を使用して時刻を表示します。 |
vbShortTime | 03:04 | 24 時間形式 (hh:mm) を使用して時刻を表示します。 |
スポンサーリンク
解説
日付は日本では 年/月/日 の形式ですが、アメリカでは 月/日/年 が一般的です。この違いを自動で補ってくれます。
Windows の形式を変更するには次の設定から行います。この設定が使用しているパソコンによって違うため、日本とアメリカなどで適切な形式に変換できます。
引数「日付」が日付形式の文字列なら、それを日付型に変換してから Windows の形式の文字列に変換します。
引数「形式」を省略したときは vbGeneralDate が適用されます。
引数「形式」が vbShortTime なら、hh:mm 形式で固定です。
「Format 関数」からも同じ形式で変換できます。
使用例
FormatDateTime 関数の使用例を紹介します。
日時の形式で文字列に変換する
日時を地域に合った形式で文字列に変換する。
Dim s As String
s = FormatDateTime("2000/1/2 3:4:5") ' vbGeneralDate と同じ形式
Debug.Print(s) ' 2000/01/02 3:04:05
s = FormatDateTime("2000/1/2 3:4:5", vbGeneralDate)
Debug.Print(s) ' 2000/01/02 3:04:05
s = FormatDateTime("2000/1/2", vbGeneralDate)
Debug.Print(s) ' 2000/01/02
s = FormatDateTime("3:4:5", vbGeneralDate)
Debug.Print(s) ' 3:04:05
s = FormatDateTime("2000/1/2 3:4:5", vbLongDate)
Debug.Print(s) ' 2000年1月2日
s = FormatDateTime("2000/1/2 3:4:5", vbShortDate)
Debug.Print(s) ' 2000/01/02
s = FormatDateTime("2000/1/2 3:4:5", vbLongTime)
Debug.Print(s) ' 3:04:05
s = FormatDateTime("2000/1/2 3:4:5", vbShortTime)
Debug.Print(s) ' 03:04
Format 関数から文字列に変換する
「Format 関数」を使用して、同じ形式で文字列に変換できます。
Dim s As String
s = Format("2000/1/2 3:4:5", "General Date")
Debug.Print(s) ' 2000/01/02 3:04:05
s = Format("2000/1/2 3:4:5", "Long Date")
Debug.Print(s) ' 2000年1月2日
s = Format("2000/1/2 3:4:5", "Short Date")
Debug.Print(s) ' 2000/01/02
s = Format("2000/1/2 3:4:5", "Long Time")
Debug.Print(s) ' 3:04:05
s = Format("2000/1/2 3:4:5", "Short Time")
Debug.Print(s) ' 03:04
スポンサーリンク