サイトについて      連絡先   検索

VBA 日付を変換する

はじめに

Excel VBA マクロの日付 (Date) を文字列へ変換する方法を紹介します。

Format 関数」を使用して、書式に従った文字列に変換できます。

FormatDateTime 関数」を使用して、Windows の形式に従った文字列に変換できます。

  • 目次
    • 文字列に変換する
    • 数値に変換する

文字列に変換する

特別な操作をしなくても、文字列型に日付を代入すると自動的に変換されます。


Dim s As String

s = #1/2/2013#
Debug.Print (s) ' 2013/01/02

s = CDate("2012/3/4")
Debug.Print (s) ' 2012/03/04

s = CDate("1:23:45")
Debug.Print (s) ' 1:23:45

このときの書式は Windows の日付と時刻の書式に従います。

Format 関数を使用する

Format 関数」を使用して、指定した書式の文字列に変換できます。

引数には(値, 書式)を渡します。書式には次のものがあります。

書式 結果 説明
yyyyy2000年を表示します。書式一つが下一桁を表しています。
mmm01月を表示します。
mm のようにすると 2 桁で表示します。日時分秒でも同じです。
dd2日を表示します。
hhh03時を表示します。
nn4分を表示します。
ss56秒を表示します。

Dim d As Date
d = "2000/1/2 3:4:56"

Debug.Print (Format(d,"yyyy/m/d"))       ' 2000/1/2

Debug.Print (Format(d,"yyyy年mm月dd日")) ' 2000年01月02日

Debug.Print (Format(d,"h:n:s"))          ' 3:4:56

Debug.Print (Format(d,"hh:nn:ss"))       ' 03:04:56

FormatDateTime 関数を使用する

FormatDateTime 関数」を使用して、Windows の日付と時刻の形式を指定して変換できます。

引数には(日付, 形式)を渡します。形式には次のものがあります。

書式 結果 説明
vbGeneralDate
(既定)
2000/01/02 3:04:05日付と時刻の一方または両方を表示します。日付部分がある場合は、短い日付として表示します。時刻部分がある場合は、長い時刻として表示します。両方ある場合は両方の部分を表示します。
vbLongDate2000年1月2日日付の「長い形式」を使用して日付を表示します。
vbShortDate2000/01/02日付の「短い形式」を使用して日付を表示します。
vbLongTime3:04:05時刻の「長い形式」を使用して時刻を表示します。
vbShortTime03:0424 時間形式 (hh:mm) を使用して時刻を表示します。

Dim d As Date
d = "2000/1/2 3:4:5"

Dim s As String

s = FormatDateTime(d)
Debug.Print (s) ' 2000/01/02 3:04:05

s = FormatDateTime(d, vbLongDate)
Debug.Print (s) ' 2000年1月2日

s = FormatDateTime(d, vbShortDate)
Debug.Print (s) ' 2000/01/02

s = FormatDateTime(d, vbLongTime)
Debug.Print (s) ' 3:04:05

s = FormatDateTime(d, vbShortTime)
Debug.Print (s) ' 03:04

数値に変換する

Year 関数」、「Month 関数」、「Day 関数」を使用して、年月日を取得できます。

Hour 関数」、「Minute 関数」、「Second 関数」を使用して、時分秒を取得できます。

Weekday 関数」を使用して、曜日を取得できます。


Dim d As Date
d = "2013/1/2 3:4:5"

Debug.Print (Year(d))    ' 2013
Debug.Print (Month(d))   ' 1
Debug.Print (Day(d))     ' 2

Debug.Print (Hour(d))    ' 3
Debug.Print (Minute(d))  ' 4
Debug.Print (Second(d))  ' 5  

Debug.Print (Weekday(d)) ' 4
  • 目次
    • 文字列に変換する
    • 数値に変換する