セルの書式設定ダイアログの表示形式タブ
セルの表示形式は、セルを右クリック→セルの書式設定、または、ホームタブ→数値の右下のダイアログ起動で表示されるダイアログの「表示形式」タブで設定します。
標準、数値、通貨、会計、日付、時刻、パーセンテージ、分数、指数、文字列、その他、ユーザー定義、と多くの表示形式がありますが、いずれもVBAで設定することが出来ます。
表示形式の設定や取得は、英語表記用のNumberFormatプロパティか日本語表記用のNumberFormatLocalプロパティで行います。
表示形式の種類についての詳細は「セルの表示形式の書式記号」をご参照ください。
構文
1 2 |
Rangeオブジェクト.NumberFormat Rangeオブジェクト.NumberFormatLocal |
Rangeオブジェクトにはセル範囲を指定します。
NumberFormatプロパティとNumberFormatLocalプロパティは設定値の取得と設定の両方を行うことが出来ます。
取得する際はString型として書式が返却されます。設定も文字列で設定します。
NumberFormatプロパティとNumberFormatLocalプロパティの違いは、NumberFormatプロパティは書式が「”General”」のように英語表記になり、NumberFormatLocalプロパティは「G/標準」のように日本語表記になります。
セル範囲の書式が異なる場合
NumberFormatプロパティかNumberFormatLocalプロパティで書式を取得する際に、セル範囲で書式設定が異なっているセルがある場合は書式が取得できず、Nullが返却されます。
各セルの書式を取得したい場合は以下のようにセル範囲をループしてセルごとに書式を取得します。
1 2 3 4 5 6 7 8 |
Sub NumberFormatGetTest() Dim r As Range For Each r In Selection Debug.Print r.NumberFormat Debug.Print r.NumberFormatLocal Next End Sub |
実行結果(書式設定をしていない2つのセルを選択した場合)
General
G/標準
General
G/標準
サンプルコード
A1セルに金額、A2セルに和暦日付の書式を設定した場合のサンプルです。
1 2 3 4 5 6 7 |
Sub NumberFormatTest() Range("A1").NumberFormatLocal = "#,###,###円" Range("A2").NumberFormatLocal = "ge年m月d日" Range("A1").Value = "1234567" Range("A2").Value = Now End Sub |
実行結果