【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付きをおすすめします。

VBAが難しいと感じたら
プロにお任せして代わりに作ってもらってはいかがでしょう?
VBAの作成依頼はこちらから

《VBA中級者向けの本》
VBA上級者を目指したい人にはパーフェクトExcel VBA一択です。

created by Rinker
技術評論社
¥3,608 (2023/06/06 16:32:04時点 Amazon調べ-詳細)

他の「VBA」の記事はこちらからどうぞ

VBA

Posted by やろまい