「excel vba 千円表示」
「エクセルvba 千円単位」
「excel2010 VBA 千円単位表示」
といった検索キーワードでのアクセスが時折あります。
Excelでは「#,##0,」のようなユーザー定義書式を設定することで、セルに入力されている数値を、千円単位表示にできます。
これをVBAから行うには、どのようなコードを書けばいいのかを探していた方による検索でしょう。
千円単位のユーザー定義書式を設定するサンプルマクロ
以下のSubプロシージャを実行すると、A1:A5セルに千円単位表示のユーザー定義書式が設定されます。Range("A1:A5").NumberFormatLocal = "#,##0,"
End Sub
A1:A5セルを選択して、千円単位表示にするユーザー定義書式「#,##0,」を設定する操作をマクロ記録すると、
Range("A1:A5").Select
Selection.NumberFormatLocal = "#,##0,"
というコードが作られます。
この2行をまとめたのが、上記Subプロシージャの、
Range("A1:A5").NumberFormatLocal = "#,##0,"
です。
SelectionをRange取得のコードに変更する
拙著「いちばんやさしいExcel VBAの教本」のLesson 55 『マクロ記録で使われる「Select」と「Selection」について学習しましょう』で、
セルに対する操作をマクロ記録した場合、Selectionプロパティは、セルを取得していることがほとんどですから、Selectionで書かれているコードを、Rangeオブジェクトを取得するコードに変更することが、汎用的に使えるExcelマクロへの第一歩となります。と書きました。
A1:A5セルを選択して、千円単位表示のユーザー定義書式を設定する操作をマクロ記録して作らたコード、
Range("A1:A5").Select
Selection.NumberFormatLocal = "#,##0,"
をまとめて、
Range("A1:A5").NumberFormatLocal = "#,##0,"
にするのも、その一例です。
.NumberFormatLocalの前を書き換えてみよう
「.NumberFormatLocal」の前は、Rangeオブジェクトを取得するさまざまなコード(オブジェクト式)に書き換えられます。
拙著p.217でお伝えしているRangeプロパティの2つの引数を使った
Range("A1", "A5").NumberFormatLocal = "#,##0,"
でも、A1:A5セルのユーザー定義書式が千円単位表示になります。
拙著p.220でお伝えしているRangeプロパティの2つの引数にCellsプロパティを組み合わせた
Range(Cells(1, 1), Cells(5, 1)).NumberFormatLocal = "#,##0,"
でもやっぱり、A1:A5セルのユーザー定義書式が千円単位表示になります。
拙著p.230でお伝えしているColumnsプロパティを使った
Columns(1).NumberFormatLocal = "#,##0,"
にすれば、1列目全体のユーザー定義書式が千円単位表示になります。
Range.EntireColumnプロパティを使って
Range("A1").EntireColumn.NumberFormatLocal = "#,##0,"
でも1列目全体のユーザー定義書式が千円単位表示になります。
Home » Excel VBA Rangeオブジェクト » 表示形式 » VBAで千円単位表示書式を設定する