VBAテクニック集 VBA一覧 文法・構文 関数・イベント

【VBA】Format関数で文字列に変換する方法|日付・数値・表示形式を完全整理

Excel VBAで処理を自動化していると、
「日付を文字列に変換したい」
「数値を特定の表示形式にしたい」
「ファイル名やメッセージ用に整形したい」
といった場面に必ず遭遇します。

そのときに使われるのが Format関数 です。

一方で、Format関数は
「なんとなく使っている」
「動いているけど意味は分からない」
という状態になりやすい関数でもあります。
特に初心者の方は、Date や Now、数値と組み合わせたときに、
「なぜこうなるのか分からない」
と感じることが多いでしょう。

しかし、Format関数は
VBAで文字列を扱う上で最重要クラスの関数です。
これを理解しているかどうかで、

  • ファイル名の自動生成
  • 帳票の見た目
  • メッセージ表示
  • ログ出力

の品質が大きく変わります。

この記事では、VBA初心者の方を対象に、
Format関数の基本構造・使い方・よくある失敗・実務での使い所を、
コード例と一緒に丁寧に解説します。

✅ Format関数とは何かを最初に理解しよう

Format関数は、単なる「文字列変換」ではありません。
ここを誤解したまま使うと、応用ができなくなります。
多くの人が「Dateを文字列にする関数」と思い込んでいますが、それは一部にすぎません。
この章を理解せずに進むと、後半のコードが暗号のように見えてしまいます。
まずは、Format関数の役割を正しく整理しましょう。

・Format関数の役割

Format関数は、
値を指定した表示形式の「文字列」に変換する関数です。

重要なのは、

  • 値そのものを変えているわけではない
  • 表示用の文字列を作っている

という点です。


・なぜ「文字列に変換」と言われるのか

Format関数の戻り値は、
必ず String(文字列)型になります。

つまり、

  • 日付
  • 数値
  • 時刻

であっても、結果は文字列です。


✅ Format関数の基本構文を理解する

ここでは、Format関数の基本形を確認します。
形を理解しておくことで、後の応用が楽になります。

・基本構文

Format(値, "表示形式")
  • 第1引数:変換したい値
  • 第2引数:どの形式で表示するか

・シンプルな例

Sub FormatSample()
    MsgBox Format(Date, "yyyy/mm/dd")
End Sub

このコードは、
今日の日付を「yyyy/mm/dd」の形に整えて表示します。


✅ DateとFormatを組み合わせる基本パターン

Format関数が最も使われるのが、日付との組み合わせです。
ここを押さえることで、実務の8割は対応できます。

・Dateをそのまま使った場合

MsgBox Date

環境によっては
2026/1/12 のように表示されます。


・Formatで日付形式を固定する例

MsgBox Format(Date, "yyyy/mm/dd")

・コード解説

  • Date
    → 今日の日付(Date型)
  • "yyyy/mm/dd"
    → 表示形式を指定

    • yyyy:年(4桁)
    • mm:月(2桁)
    • dd:日(2桁)

これにより、
常に同じ形式の文字列を得ることができます。


✅ ファイル名用に日付を文字列変換する

Format関数が実務で最も活躍するのが、
ファイル名の自動生成です。

・そのままDateを使うと起きる問題

fileName = "報告書_" & Date & ".xlsx"

このコードは、
ファイル名に使えない文字(/)が含まれるためエラーになります。


・Formatで安全な文字列に変換する例

fileName = "報告書_" & Format(Date, "yyyymmdd") & ".xlsx"

・なぜこの形式がよく使われるのか

  • ファイル名に使える
  • 並び替えで時系列になる
  • 国や環境に依存しない

実務では 最も定番の形式です。


✅ 数値を文字列に変換するFormatの使い方

Format関数は、数値の表示にもよく使われます。

・数値をそのまま表示する例

MsgBox 12345

・カンマ区切りで表示する例

MsgBox Format(12345, "#,##0")

・コード解説

  • #,##0
    → 3桁ごとにカンマを付ける書式

結果は
12,345
という文字列になります。


・小数点を含めた例

MsgBox Format(12345.678, "#,##0.00")

12,345.68

※ 四捨五入される点も重要です。

参考:【VBA】データ型の違いを徹底解説|正しい使い分けでエラーと不具合を防ぐ




✅ 時刻・日時をFormatで整形する

Now関数とFormatの組み合わせも、実務で頻出です。

・Nowをそのまま使う場合

MsgBox Now

2026/1/12 14:35:10 のように表示


・日時を分けて表示する例

MsgBox Format(Now, "yyyy/mm/dd hh:nn:ss")

・書式の意味

  • hh:時
  • nn:分
  • ss:秒

※ 分は mmではなく nn なので注意が必要です。

参考:【VBA】日付を含むファイル名で自動保存する方法|上書き防止と実務設計まで解説


✅ Format関数のよくある勘違い

初心者が特につまずくポイントを整理します。

・値そのものが変わると思っている

Dim d As Date
d = Date
d = Format(d, "yyyymmdd")

この時点で
dDate型ではなく文字列 になります。


・数値計算に使おうとしてエラーになる

Formatの結果は文字列なので、
計算には使えません

計算 → Format
の順序が基本です。


✅ 実務でよく使うFormatパターン集

・日付(帳票・表示用)

Format(Date, "yyyy年mm月dd日")

・ファイル名用

Format(Date, "yyyymmdd")

・日時ログ用

Format(Now, "yyyymmdd_hhnnss")

・金額表示

Format(price, "#,##0")

✅ FormatとCStrの違い

・CStrの場合

MsgBox CStr(Date)

→ 環境依存の表示


・Formatの場合

MsgBox Format(Date, "yyyy/mm/dd")

→ 表示を完全に制御できる

👉 実務ではFormatの方が圧倒的に安全です。

参考:【VBA】型変換(CInt/CLng/CStr/CDate)の使い分けと注意点|実務のデータ処理


✅ Format関数を使うべき場面・使わない場面

・使うべき場面

  • 表示
  • ファイル名
  • メッセージ
  • ログ

・使わない方がよい場面

  • 計算処理
  • 比較処理



✅ まとめ:Format関数を理解するとVBAが安定する

  • Formatは「表示用文字列」を作る関数
  • 戻り値は必ず文字列
  • Date / Now / 数値との相性が良い
  • 実務ではファイル名・表示・ログで必須
  • 計算とは切り分けて使う

Format関数を正しく理解すると、
VBAコードの意図が読みやすくなり、バグも減ります

日付・数値・表示形式を安定して扱えるようになることは、
VBA実務における大きな武器になります。

参考:【VBA】「型が一致しません」エラーに対処する方法|原因別に完全解説

    -VBAテクニック集, VBA一覧, 文法・構文, 関数・イベント