VBAでFormatDateTime関数を使用して、日付または時刻をコンピューターの地域の設定で指定されている形式に従った文字列型に変換する方法をご説明します。
コンピューターの地域の設定を生かすケースがあまりないと思いますが、国を跨いだ日本とアメリカ等で区別する場合等に利用すると便利です。
FormatDateTime関数は引数も少なく、変換出来る設定も限られていますので、コンピューターの地域の設定で使い分けたい場合など特殊な使用方法以外は「Format関数」を使用する方が良いかもしれません。
Format関数の使い方は「Format関数で表示形式を指定する」をご覧ください。
1.FormatDateTime関数の使い方
FormatDateTime関数は 日付または時刻をコンピューターの地域の設定で指定されている形式に従った文字列型を返します。
次のように記述します。
FormatDateTime(Date, [NamedFormat])
「Date」には変換したい日付もしくは時刻を指定します。
「NamedFormat」は変換したい形式を指定します。
NamedFormatは省略可能で、省略した場合は「vbGeneralDate」が使用されます。
NamedFormatの定数一覧
定数 | 値 | 説明 |
vbGeneralDate | 0 | 日付と時刻のどちらか、または両方を表示します。 日付部分のみの場合は、短い日付として表示します。 時刻部分のみの場合は、長い時刻として表示します。 両方ある場合は両方の部分を表示します。 |
vbLongDate | 1 | コンピューターの地域の設定で指定されている長い日付形式を使用して日付を表示します。 |
vbShortDate | 2 | コンピューターの地域の設定で指定されている短い日付形式を使用して日付を表示します。 |
vbLongTime | 3 | コンピューターの地域の設定で指定されている時刻形式を使用して時刻を表示します。 |
vbShortTime | 4 | 24時間形式 (hh:mm)を使用して時刻を表示します。 |
2.サンプルコード
Sub Sample1()
Debug.Print FormatDateTime("2019/1/10 1:10:30") '20/01/02 1:10:30
Debug.Print FormatDateTime("2019/1/10") ' 2019/01/02
Debug.Print FormatDateTime("1:10:30") ' 1:10:30
'vbLongDateの場合
Debug.Print FormatDateTime("2019/1/10 1:10:30", vbLongDate) '2019年1月10日
'vbShortDateの場合
Debug.Print FormatDateTime("2019/1/10 1:10:30", vbShortDate) '2019/01/10
'vbLongTimeの場合
Debug.Print FormatDateTime("2019/1/10 1:10:30", vbLongTime) '1:10:30
'vbShortTimeの場合
Debug.Print FormatDateTime("2019/1/10 1:10:30", vbShortTime) '01:10
End Sub