Excel VBAの「FormatCurrency 関数」について解説します。
FormatCurrency 関数とは
Excel VBA の FormatCurrency 関数は、指定した数値をシステムの定義に基づいた通貨型式の文字列に書式設定する関数です。
VBAで請求書を作成する際に「¥1,234,567」などのように通貨記号を付けたり、3桁ごとにカンマを入れたりしたい場合に便利な関数です。
FormatCurrency 関数の構文や実際の使い方について、サンプルコードを使ってわかりやすく解説していきます。
FormatCurrency 関数(Visual Basic for Applications リファレンス)
構文(引数と戻り値)
Excel VBAの関数を使いこなすには、関数の構文を正しく理解しておくことが重要です。
構文
FormatCurrency(Expression [, NumDigitsAfterDecimal [, IncludeLeadingDigit [, UseParensForNegativeNumbers [, GroupDigits ]]]])
引数
| 指定項目 | 説明 |
|---|---|
| Expression | 【必須】通貨型式を設定する数値(式) |
| NumDigitsAfterDecimal | 【省略可】小数点以下の桁数(規定値は -1:地域の設定に従う ) |
| IncludeLeadingDigit | 【省略可】小数値に先頭の 0 を表示するか(規定は地域の設定) |
| UseParensForNegativeNumbers | 【省略可】負の数を( )カッコで囲むか(規定は地域の設定) |
| GroupDigits | 【省略可】桁区切り記号(,)を使用するか(規定は地域の設定) |
IncludeLeadingDigit、UseParensForNegativeNumbers、および GroupDigits 引数の設定は次のとおりです。
| 定数 | 値 | 説明 |
|---|---|---|
| vbTrue | -1 | True |
| vbFalse | 0 | False |
| vbUseDefault | -2 | コンピューターの地域の設定を使用します。 |
Windows 11/10で地域設定を確認するには、[設定] > [時刻と言語] > [地域](または言語と地域)の順に開き、「国または地域」で確認できます。
戻り値
戻り値は Variant (String)型の文字列です。
例えば、Partition(25, 0, 100, 20) を実行すると、25は「20〜39」の間にあるため、戻り値として ” 20: 39″ という文字列が返ります。最大桁数に揃えるため、スペースが含まれる点に注意が必要です。
| start | stop | interval | 最初より前 | 最初の範囲 | 最後の範囲 | 最後より後 |
|---|---|---|---|---|---|---|
| 0 | 100 | 20 | ” : -1″ | ” 0: 19″ | “100:100” | “101: “ |
| 20 | 199 | 10 | ” : 19″ | ” 20: 29″ | “190:199” | “200: “ |
| 100 | 1010 | 20 | ” : 99″ | ” 100: 119″ | “1000:1010” | “1011: “ |
解説(使用例)
ここからは、使用例のサンプルを使って解説します。
FormatCurrency 関数の基本的な使い方
システムの地域設定(通貨値)を確認する
FormatCurrency に省略可能な引数を設定しないで実行した場合、システムの地域設定に従った値を返すので次のコードを実行してみます。
'■FormatCurrency関数サンプル01(システムの地域の設定確認)
Sub FormatCurrency_Sample_01()
Dim res As String
'省略可の引数は全て省略(地域の設定のまま)
res = FormatCurrency(12345) & vbCrLf
'小数値の場合の表示を確認
res = res & FormatCurrency(0.12345) & vbCrLf
'負の数値の表示を確認
res = res & FormatCurrency(-12345)
MsgBox res
End Sub実行結果のMsgBox画像がこちらです。

- 1番目の結果 \12,345
- 通貨記号は「\」
- 桁区切り記号は「,」が表示される設定
- 2番目の結果 \0
- 少数値の先頭に「0」を表示する設定
- 小数の桁数はゼロ(小数の桁数0)の設定
- 3番目の結果 -\12,345
- 負の数を( )カッコで囲まない設定
システムの地域設定に従ったデフォルトの値表示が確認できました。
引数を省略した場合の表示は確認できましたので、次は引数を設定していきましょう
小数点以下の表示設定
小数点以下の表示を設定する例です。
'■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コードを実行した結果が次のMsgBox画像のとおりです。

- 1番目の結果 \0.1235
- 4桁目まで表示する設定でした
- 5桁目の「5」が四捨五入され4桁目は「5」と表示
- 2番目の結果 \.1234500
- 少数値の先頭に「0」を表示しない設定
- 小数点以下「7桁」まで表示する設定のため「00」を表示
負数と桁区切りの表示設定
'■FormatCurrency関数サンプル03(負数と桁区切り設定)
Sub FormatCurrency_Sample_03()
Dim res As String
'負数をカッコ表記にする
res = FormatCurrency(-1000, , True, True) & vbCrLf
'カンマを付けない
res = res & FormatCurrency(1000, , True, False, False)
MsgBox res
End Sub
- 1番目の結果 (\1,000)
- 負の数を ( ) 内に表示設定
- マイナス記号「-」は表示しない
- 2番目の結果 \1000
- 桁区切り記号「,」の表示を無効にする設定
FormatCurrency関数の注意点
戻り値は「文字列」
FormatCurrency は数値ではなく文字列を返すため、計算に使う場合は注意が必要です。
計算完了後に FormatCurrency で変換するようにしましょう。
セルに値を入力する際は「文字列」として出力されてしまうため、Excel側の「表示形式」で制御したい場合は、この関数を使わず数値として出力し「Range(“A1”).NumberFormatLocal = “\#,##0″」のように設定するのが一般的です。
通貨記号はシステムの地域設定に依存する
通貨記号( ¥ や $ など)は、システム (OS) の地域設定に依存します。そのため、日本語環境では「¥」になりますが、英語圏の環境で実行すると「$」に変わってしまいます。
変更したい場合は、システム (OS) の地域設定を変更する必要があります。
システムの地域設定に左右されない方法
より柔軟に書きたい場合は、Format関数を使うのがよいでしょう。

FormatCurrency関数 と Format関数の違いは次のとおりです。
| 関数名 | 特徴 | 用途 |
| FormatCurrency | PCの設定に従って記号( ¥ や $ など)が変わる | ユーザーの環境に合わせたい時 |
| Format | 自分で指定した記号( \ や 円 など)で固定される | 表示形式を統一したい時 |
- FormatCurrency → 簡単・自動
- Format → 自由度が高い
という使い分けになります。
まとめ
VBA の FormatCurrency 関数は、数値を通貨型式に変換する関数です。
簡単に通貨記号「¥」や桁区切り「,」を付与でき、小数点以下の桁数も自由に設定できます。
ただし、戻り値は文字列なので、計算が終わった後に使うようにしましょう。
【使いどころ】
- 金額を見やすく表示したいとき
- レポート出力(金額表示)
- 請求書、領収書、契約書などの金額表示
- MagBox などでメッセージを表示する際
以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;
VBAの関数一覧はこちらからご参照ください。

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

