このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。
消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。
問題のある表現が見つかりましたらお問い合わせよりご一報いただけますと幸いです。

【VBA】表示形式の設定方法(NumberFormatLocalとNumberFormatの違いも解説)

今回はVBAでセルの表示形式を設定する方法を紹介します。

こんな人に向けた記事です。

  • 表示形式を設定する方法が知りたい
  • セルに設定されている表示形式をコピーしたい
  • NumberFormatLocalとNumberFormatの違いを知りたい

VBAが難しいと感じたら
ココナラにてマクロ(VBA)の作成代行を始めました。
ご依頼はこちらから

表示形式の設定方法

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

Posted by やろまい