【VBA】FormatDateTime関数で日付や時刻をシステムに合わせた形式で文字列化
はじめに
VBA(Visual Basic for Applications)では、日付や時刻を扱う際に、データを適切な形式で表示するための便利な関数が用意されています。
その中でも FormatDateTime
関数は、指定された日付や時刻をシステムのロケールに合わせた形式にフォーマットして文字列として返してくれます。
この関数は、プログラムのユーザーインターフェースで見やすい日付・時刻表示を行う場合や、ログファイルへの出力などに活用できます。
ここでは、初心者の方にも分かりやすいように、基本的な使い方から引数の詳細、そして具体的な例を交えて詳しく解説します。
基本的な使い方
FormatDateTime
関数は、以下のシンプルな構文で使用します。
FormatDateTime(date, [NamedFormat])
第一引数の date
には日付または時刻の値を指定し、第二引数の NamedFormat
にはフォーマットの種類を定数で指定します。
第二引数は省略可能ですが、省略した場合はシステムの既定値に従って日付と時刻が表示されます。
引数の詳細
この関数には2つの引数があり、それぞれ次のような意味を持ちます。
-
date: 日付または時刻を表す値です。
例としては、Now
(現在の日付と時刻)や、#2025/02/13#
のようにリテラルで指定する方法があります。 -
NamedFormat: 日付または時刻の表示形式を指定するためのオプションの引数です。
使用できる定数は以下の通りです。-
vbGeneralDate
: 日付と時刻の両方を表示します。
例:"2025/02/13 14:30"
(システムの設定により異なります) -
vbLongDate
: 長い日付形式で表示します。
例:"2025年2月13日(木)"
-
vbShortDate
: 短い日付形式で表示します。
例:"2025/02/13"
-
vbLongTime
: 長い時刻形式で表示します。
例:"14:30:00"
-
vbShortTime
: 短い時刻形式で表示します。
例:"14:30"
-
具体例
以下に、FormatDateTime
関数を利用した具体的な例を多数紹介します。実際にコードを実行しながら、どのような結果が得られるか確認してみてください。
例: 現在の日付と時刻を既定の形式で表示
Sub ExampleDefault() Dim currentDate As Date currentDate = Now MsgBox FormatDateTime(currentDate) End Sub
この例では、Now
関数で取得した現在の日付と時刻を FormatDateTime
で既定の形式に変換し、メッセージボックスで表示しています。
システムのロケール設定に依存して表示されるため、環境に応じた日付と時刻が出力されます。
例: 短い日付形式で表示
Sub ExampleShortDate() Dim specificDate As Date specificDate = #2025/02/13# MsgBox FormatDateTime(specificDate, vbShortDate) End Sub
このコードは、特定の日付(2025年2月13日)を短い日付形式で表示します。結果は「2025/02/13」のような形式となり、シンプルに日付のみが出力されます。
例: 長い時刻形式で表示
Sub ExampleLongTime() Dim currentTime As Date currentTime = Now MsgBox FormatDateTime(currentTime, vbLongTime) End Sub
こちらの例では、現在の時刻を長い時刻形式で表示します。秒まで含めた時刻(例: 「14:30:00」)が表示されるため、詳細な時間情報を確認するのに適しています。
例: 日付と時刻の両方を表示
Sub ExampleGeneralDate() Dim currentDateTime As Date currentDateTime = Now MsgBox FormatDateTime(currentDateTime, vbGeneralDate) End Sub
この例は、vbGeneralDate
定数を指定して、日付と時刻の両方を表示します。
システムの既定値に依存しますが、一般的には「2025/02/13 14:30」のような形式で表示されます。
例: カスタムフォーマットとの比較
FormatDateTime
関数はシステムのロケールに依存して自動でフォーマットされますが、特定のフォーマットで日付や時刻を表示したい場合は、Format
関数を利用することもできます。
Sub ExampleCustomFormat() Dim currentDate As Date currentDate = Now MsgBox Format(currentDate, "yyyy-mm-dd hh:nn:ss") End Sub
この例では、Format
関数を使用して「年-月-日 時:分:秒」の形式にカスタムフォーマットしています。こちらはシステム設定に影響されず、常に同じ形式で表示される点が特徴です。
便利なヒント
FormatDateTime
関数を活用する上で、覚えておくと役立つポイントをいくつか紹介します。
-
システムのロケールやユーザー設定により、同じ定数を使っても表示形式が変わる場合があります。統一した表示が必要な場合は、カスタムフォーマットの
Format
関数の利用も検討してください。 -
NamedFormat
引数は省略可能ですが、明確なフォーマットを指定したい場合は必ず定数を渡すことで、意図した形式の出力が得られます。 -
日付や時刻の操作に慣れるために、
Now
、Date
、Time
関数などと組み合わせると、より実践的なコードが書けるようになります。 - 複数の日時フォーマットを扱う場合は、各定数の動作の違いを実際に試してみて、プロジェクトに最適なフォーマットを選んでください。
まとめ
VBAの FormatDateTime
関数は、日付や時刻をシンプルにフォーマットするための強力なツールです。システムの設定に基づいた表示を簡単に実現できるため、
初心者の方でも扱いやすいのが特徴です。この記事で紹介した基本的な使い方や具体例、便利なヒントを参考にして、ぜひ自分のプロジェクトで活用してみてください。