VBAでデータを扱っていると、次のようなことはありませんか?
- 日付の表示形式を変えたい
- 数値にカンマを付けたい
- 文字列の見た目を整えたい
このような場合は、Format関数を使うことで簡単に解決できます。
日付・数値・文字列の表示形式を自由に変換できる、VBAで非常に重要な関数です。
この記事では、Format関数の基本から実務で使える応用までを初心者向けに分かりやすく解説します。
この記事でできること
- Format関数の基本が分かる
- 日付の表示形式を変更できる
- 数値にカンマや桁指定ができる
- 実務で使える書き方が分かる
基本:Format関数の使い方
まずは基本構文です。
Format(値, 書式)
例:
MsgBox Format(Date, "yyyy/mm/dd")
これで現在の日付が「2024/01/01」のように表示されます。
日付のフォーマット
よく使うパターン
Format(Date, "yyyy/mm/dd") ' 2024/01/01
Format(Date, "yyyymmdd") ' 20240101
Format(Date, "yyyy年mm月dd日") ' 2024年01月01日
各記号の意味
- yyyy → 年(4桁)
- mm → 月(2桁)
- dd → 日(2桁)
数値のフォーマット
カンマ付き表示
Format(1000, "#,##0")
→ 1,000
小数点付き
Format(123.456, "0.00")
→ 123.46
ゼロ埋め
Format(5, "000")
→ 005
文字列のフォーマット
文字列もそのまま整形できます。
Format("ABC", "@@@")
(基本的にはそのまま表示されます)
実務でよく使うパターン
① 日付を8桁に変換
Format(Date, "yyyymmdd")
→ 20240101
② ファイル名に日付を付ける
Dim fileName As String
fileName = "レポート_" & Format(Date, "yyyymmdd") & ".xlsx"
③ 金額表示を整える
Format(5000000, "#,##0")
→ 5,000,000
セルに書き込む例
Range("A1").Value = Format(Date, "yyyy/mm/dd")
注意点(重要)
① Formatは文字列を返す
Formatの結果は「文字列」です。
Dim val As String
val = Format(Date, "yyyymmdd")
数値として使いたい場合は変換が必要です。
CLng(Format(Date, "yyyymmdd"))
② 表示形式だけ変えたい場合は別
値はそのままで見た目だけ変えたい場合はこちらです。
Range("A1").NumberFormat = "yyyy/mm/dd"
よくあるエラーと対処法
① 数値なのに文字列扱いになる
Formatは文字列を返すためです。
必要に応じてCLngなどで変換してください。
② 書式が反映されない
書式のスペルを確認してください。
③ コードは正しいのにエラーになる
コピー時に全角文字や特殊文字が混ざることがあります。
その場合は該当行を手入力し直すと解決することがあります。
まとめ
- Formatは表示形式を整える関数
- 日付・数値・文字列すべてに対応
- 結果は文字列になる点に注意
- 実務では日付・金額・ファイル名で大活躍
Format関数を使いこなせるようになると、VBAでのデータ整形が一気に楽になります。
特に実務では使用頻度が非常に高いので、ぜひマスターしておきましょう。


コメント