HOME > 即効テクニック > Excel VBA > セル操作関連のテクニック > 通貨形式の表示形式を設定する

即効テクニック

セル操作関連のテクニック

通貨形式の表示形式を設定する

(Excel 97/2000/2002/2003/2007)
セルに数値を入力するとき、通貨形式の表示形式を設定したいときがあります。
たとえば「\1,000」のような書式です。
こうした通貨形式の表示形式を設定するには、どうしたらいいでしょう。

表示形式は、RangeオブジェクトのNumberFormatLocalプロパティで設定できます。
「\1,000」と表示するには「\#,##0」のような書式記号を設定します。

Sub Sample1()
  ActiveCell.Value = 1000
  ActiveCell.NumberFormatLocal = "\#,##0"
End Sub   
書式記号には、[セルの書式設定]ダイアログボックスの「ユーザー定義」で指定できるのと同じ書式記号が設定できます。 通貨形式の表示形式は、ツールバーやリボンのボタンからも設定できます。 ボタンを押して表示形式を設定する操作を、マクロ記録してみると次のようなコードが記録されます。
Sub Macro1()
  Selection.Style = "Currency [0]"
End Sub   
マクロ記録のコードには、NumberFormatLocalプロパティではなく「Style = "Currency [0]"」というコードが記録されました。 これは、Excelのスタイル機能を使って、表示形式が設定されたという意味です。 Excel 2003までのバージョンで、[書式]-[スタイル]を実行すると[スタイル]ダイアログボックスが表示されます。 この[スタイル]ダイアログボックスは、フォントの種類、文字のサイズ、セルの背景色や表示形式などをセットにして記憶しておき、セルに対して一気に設定する機能です。 なお、Excel 2007以降のバージョンでは[スタイル]ダイアログボックスではなく、[ホーム]タブ-[スタイル]グループの[セルのスタイル]ボタンをクリックしてセルのスタイルを選択します。 Excelには、あらかじめいくつかのスタイルが定義されています。 "Currency [0]"も、そのひとつで、通貨形式の表示形式が定義されています。 "Currency [0]"の表示形式を確認してみましょう。
Sub Sample2()
  Debug.Print ActiveWorkbook.Styles("Currency [0]").NumberFormatLocal
End Sub   
標準のスタイルには、もうひとつ"Currency"という通貨形式も定義されています。 こちらの表示形式は"\#,##0.00"のように、小数第2位まで表示されるようになっています。 セルに数値を代入すると同時に、通貨形式の表示形式を設定したいとき、、次のように「\」と「,」を付けたデータを代入すると、セルには「\1,000」が文字列として代入されてしまいますので注意しましょう。
Sub Sample3()
  ActiveCell.Value = "\1,000"
End Sub   
手入力でセルに"\1,000"と入力すると、セルには"1000"という数値が入力され、自動的に通貨形式の表示形式が設定されます。 ただし、これは手入力した場合です。 マクロで"\1,000"を代入したときは、手入力と同じにはなりません。 文字列として入力された"\1,000"をマクロで数値に変換することも可能ですが、そんな手間をかけるのなら、素直にNumberFormatLocalやStyleを使う方が得策です。