Excel VBAの「FormatDateTime 関数」について解説します。
FormatDateTime 関数とは
Excel VBA の FormatDateTime 関数は、日付や時刻を指定の表示形式に変換した文字列を返します。
日付や時刻を見やすく簡単に整えて表示したいときに便利な関数です。
FormatDateTime 関数の構文や実際の使い方について、サンプルを使ってわかりやすく解説していきます。
FormatDateTime 関数(Visual Basic for Applications リファレンス)
構文(引数と戻り値)
Excel VBAの関数を使いこなすには、関数の構文を正しく理解しておくことが重要です。
構文
FormatDateTime(Date [, NamedFormat ])
引数
| 指定項目 | 説明 |
|---|---|
| Date | 【必須】日付や時刻のデータを指定します |
| NamedFormat | 【省略可】表示形式を定数または値で指定します |
表示形式はWindowsの地域設定(ロケール)に依存します。
NamedFormat 引数に指定できる定数 (値) の一覧は次のとおりです。
| 定数 | 値 | 説明 | 出力例 |
| vbGeneralDate | 0 | 日付・時刻を表示(省略時の既定) | 2026/04/14 7:34:57 |
| vbLongDate | 1 | 長い日付形式を表示 | 2026年4月14日 |
| vbShortDate | 2 | 短い日付形式を表示 | 2026/04/14 |
| vbLongTime | 3 | 長い時刻形式を表示 | 7:34:57 |
| vbShortTime | 4 | 短い時刻型式を表示 | 07:34 |
戻り値
戻り値の型は、文字列型 (String) です。
解説(使用例)
ここからは、使用例のサンプルを使って解説します。
FormatDateTime 関数の基本的な使い方
FormatDateTime 関数で現在日時 (Now) を書式定数ごとの表示形式を確認してみましょう。
'■FormatDateTime関数サンプル01(引数の表示形式確認)
Sub FormatDateTime_Sample_01()
Dim strNow As String
Dim res As String
strNow = FormatDateTime(Now)
res = "引数省略(既定):" & strNow & vbCrLf
strNow = FormatDateTime(Now, vbLongDate)
res = res & "長い日付形式:" & strNow & vbCrLf
strNow = FormatDateTime(Now, vbShortDate)
res = res & "短い日付形式:" & strNow & vbCrLf
strNow = FormatDateTime(Now, vbLongTime)
res = res & "長い時刻形式:" & strNow & vbCrLf
strNow = FormatDateTime(Now, vbShortTime)
res = res & "短い時刻形式:" & strNow
MsgBox res
End Sub実行結果のMsgBox画像がこちらです。

最初の NamedFormat 引数を省略した規定値の Now値は、システムの地域設定に従ったデフォルトの値表示が返されていることが確認できます。
以降は、NamedFormat 引数に指定した定数の表示です。
時刻表示の部分を比較すると、vbShortTime の場合は 07:34 のように2桁表示になることが確認できます。
セルにフォーマットして出力する例
次の例は、元データと指定書式にフォーマットしたデータをセルに出力します。
'■FormatCurrency関数サンプル02(小数点以下の表示設定)
Sub FormatCurrency_Sample_02()
Dim res As String
'小数点以下を4桁にする(第2引数)
res = FormatCurrency(0.12345, 4) & vbCrLf
'小数値に先頭のゼロを表示しない(第3引数)
res = res & FormatCurrency(0.12345, 7, False)
MsgBox res
End Subコードを実行した結果が次のセル画像のとおりです。

FormatDateTime関数の注意点
FormatDateTime関数には次のような注意点があります。
表示は地域設定(ロケール)に依存する
表示形式はWindowsの地域設定に影響されます。
したがって、実行するPCによって表示形式が変わる可能性がある点に注意が必要です。
書式の細かい指定はできない
FormatDateTime関数は手軽に使える点は良いのですが、「yyyy年mm月dd日」「20260414」や「曜日表示」などの細かい指定や特殊な表示形式には対応できません。
細かい書式指定や自由なカスタマイズが必要な場合は、Format関数を使いましょう。

FormatDateTime関数 と Format関数の違いは次のとおりです。
| 関数名 | 特徴 | 例 |
| FormatDateTime | 簡単・定型表示(PCの設定に依存) | FormatDateTime(Now, vbShortDate) |
| Format | 自由に書式指定可能(曜日表示など) | Format(Now, “yyyy/mm/dd (aaa)”) |
まとめ
VBA の FormatDateTime 関数は、システムで決まった標準的な日付・時刻形式を簡易に素早く適用したいときに非常に便利です。定数を指定するだけで簡単に表示形式を変更できます。
- 日付を表示したいなら:vbLongDate か vbShortDate
- 時刻を表示したいなら:vbLongTime か vbShortTime
この2点を押さえておくだけで、VBAでの一般的な日付操作は簡単になります。
ただし、曜日を表示させたり、特殊なフォーマットが必要な場合には「Format関数」を使う必要があります。
以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;
VBAの関数一覧はこちらからご参照ください。

VBAサンプルファイルダウンロードページのご案内
このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。
ダウンロードページへのリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!

