【VBA】表示形式の設定方法(NumberFormatLocalとNumberFormatの違いも解説)
今回はVBAでセルの表示形式を設定する方法を紹介します。
こんな人に向けた記事です。
- 表示形式を設定する方法が知りたい
- セルに設定されている表示形式をコピーしたい
- NumberFormatLocalとNumberFormatの違いを知りたい
表示形式の設定方法
Sub DisplayType()
Range("A1").NumberFormatLocal = "G/標準" '標準
Range("A2").NumberFormatLocal = "0_);赤" '数値
Range("A3").NumberFormatLocal = "#,##0_);赤" '通貨
Range("A4").NumberFormatLocal = "_ * #,##0_ ;_ * -#,##0_ ;_ * ""-""_ ;_ @_ " '会計
Range("A5").NumberFormatLocal = "yyyy/m/d" '短い日付形式
Range("A6").NumberFormatLocal = "[$-F800]dddd, mmmm dd, yyyy" '長い日付形式
Range("A7").NumberFormatLocal = "[$-F400]h:mm:ss AM/PM" '時刻
Range("A8").NumberFormatLocal = "0%" 'パーセンテージ
Range("A9").NumberFormatLocal = "# ?/?" '分数
Range("A10").NumberFormatLocal = "0.E+00" '指数
Range("A11").NumberFormatLocal = "@" '文字列
End Sub
表示形式の設定にはNumberFormatLocalプロパティを使います。
サンプルコードにはExcelで候補表示される11個の表示形式を記載しました。
一度実行してみてA1~A11セルの表示形式が変わる様子を確認してみてください。
スタンダードな表示形式であればこのコードをコピーすればOKです。
セルに設定されている表示形式をコピーする方法
スタンダードでなく、自分でアレンジした表示形式を設定したい場合は、一度Excelでユーザー定義の表示形式を作成してそれをコピーするのがおすすめです。
Sub GetDisplayType()
Debug.Print ActiveCell.NumberFormatLocal 'アクティブセルの表示形式
End Sub
このコードを実行するとアクティブセルに設定された表示形式がイミディエイトウィンドウに出力されます。
出力された表示形式をコピーしてRange(“A1").NumberFormatLocal = “出力された表示形式" としましょう。
VBAで調べて作成するのは割と大変なので、一度Excelで表示形式を作成するのをおすすめします。
NumberFormatLocalとNumberFormatの違い
NumberFormatLocalと似たプロパティにNumberFormatがあります。
どちらを使うべきか、と聞かれたらNumberFormatLocalです。
Sub LocalOrNot()
'''Localの有無を比較
'''表示形式が標準のセルをアクティブにして実行してみてください
Print ActiveCell.NumberFormat 'General
Print ActiveCell.NumberFormatLocal 'G/標準
End Sub
このようにLocal無しだと日本語でなく、英語ベースの表示形式となります。
(正確にはPCの言語環境に影響されます)
英語だと普段のExcelとは違う表記をする必要が出てくるので、Local付きをおすすめします。