【VBAスタンダード対策】Format 関数による数値の桁区切り・表示形式の変換を攻略!
VBAで数値(12345)をカンマ区切りの文字列(12,345)や通貨表示に整形する際に必須となるのが Format 関数 です。よく使われる書式記号の役割と指定方法をマスターしましょう。
1. 問題:Format 関数による数値の表示形式指定
【 問題 】 下記のコードを実行して FormatTest プロシージャを呼び出した際、メッセージボックス(MsgBox)に "12,345"(3桁区切りの文字列)と表示させたい。空欄 ( A ) に入る記述として正しいものはどれでしょうか?
Sub FormatTest()
Dim num As Long
num = 12345
MsgBox ( A )
End Sub
Dim num As Long
num = 12345
MsgBox ( A )
End Sub
① Format(num, "#,##0")
② Format(num, "Standard")
③ SetFormat(num, "3-digit")
④ NumberFormat(num, "#,##0")
2. 正解:Format 関数の記述に関する正解
正解: ① Format(num, "#,##0")
3. 解説:Format 関数の構文と「#,##0」書式指定子の構造
値の表示形式を指定した文字列に変換するには Format(値, "書式") という構文を使用します。
[ Format 関数の構造と書式記号 ]
構文:Format( 変換したい値 , "表示形式のパターン" )
1. 代表的な数値の書式記号
・#,##0 : 3桁ごとにカンマ区切りを入れる(値が 0 の場合は "0" と表示する)
・#,### : 3桁ごとにカンマ区切りを入れる(値が 0 の場合は表示しない)
・#,##0円 / \"#,##0 : カンマ区切り+通貨単位の追加(例: 12,345円)
2. 選択肢 ④ NumberFormat との違い(超頻出トラップ!)
VBAのコード内で「値や変数を整形して文字列を取得する」場合は Format 関数 を使用します。
構文:Format( 変換したい値 , "表示形式のパターン" )
1. 代表的な数値の書式記号
・#,##0 : 3桁ごとにカンマ区切りを入れる(値が 0 の場合は "0" と表示する)
・#,### : 3桁ごとにカンマ区切りを入れる(値が 0 の場合は表示しない)
・#,##0円 / \"#,##0 : カンマ区切り+通貨単位の追加(例: 12,345円)
2. 選択肢 ④ NumberFormat との違い(超頻出トラップ!)
NumberFormat や NumberFormatLocal は、Range オブジェクトのプロパティです(例: Range("A1").NumberFormatLocal = "#,##0")。VBAのコード内で「値や変数を整形して文字列を取得する」場合は Format 関数 を使用します。
ここが試験に出る!: スタンダード試験では、セルの表示形式を設定する「Range.NumberFormatLocal」と、変数の値をフォーマット変換する「Format 関数」の混同を狙う問題が多発します。「変数や値をフォーマット変換する組み込み関数は Format」と区別して覚えましょう。
4. まとめ
「3桁カンマ区切りの文字列に変換するなら Format(値, "#,##0") 」。この関数を押さえておけば、メッセージボックスに金額を表示させたり、テキストファイル出力時に数値をきれいなカンマ区切り形式で整形したりする処理がスムーズに書けるようになります。
PR