和風スパゲティのレシピ

日本語でコーディングするExcelVBA

セルの表示形式を設定する-NumberFormatLocal

1,000のような桁区切りカンマを「#,##0」で設定するなど、
セルの表示形式を設定する方法を解説します。

RangeオブジェクトのNumberFormatLocalプロパティを使用します。

セルの表示形式を設定する

基本構文

設定したいセル範囲.NumberFormatLocal = 形式指定文字列

サンプルコード

Range("A2:A100").NumberFormatLocal = "G/標準" ' 標準
Range("A2:A100").NumberFormatLocal = "0" ' 整数部のみ表示
Range("A2:A100").NumberFormatLocal = "0.00" ' 小数第2まで表示
Range("A2:A100").NumberFormatLocal = "#,##0" ' 桁区切りカンマを入れた整数
Range("A2:A100").NumberFormatLocal = "@" ' 文字列
Range("A2:A100").NumberFormatLocal = "yyyy/mm/dd" ' 日付
Range("A2:A100").NumberFormatLocal = "yyyy/mm/dd(aaa)" ' 日付(曜日付)
Range("A2:A100").NumberFormatLocal = "ggge年m月d日" ' 和暦
Range("A2:A100").NumberFormatLocal = "h:mm:ss" ' 時刻
Range("A2:A100").NumberFormatLocal = "[h]:mm:ss" ' 時刻(24h超過を表示)

' 列全体に反映する場合
Columns("A").NumberFormatLocal = "#,##0"

解説

セルの表示形式を設定する場合は、
設定したい文字列を対象セル範囲のNumberFormatLocalプロパティに代入します。

非常にストレートな構文のため、特に解説は不要と思います。


設定する形式指定文字列はExcelの対象ウィンドウ

セルの表示形式設定ウィンドウ

こちらに普段表示/設定しているものと全く同じです。


よって、まずはこのウィンドウを使って正しく設定できたか確認し、
その後ここのテキストをVBAにコピーして扱うのがおすすめです。

セルの表示形式を調べる

NumberFormatLocalはプロパティですので、当然読み取ることも可能です。

例えば以下のコードを実行すると、
A1セルの表示形式を取得できていることが分かります。

Dim 表示形式 As String
表示形式 = Range("A1").NumberFormatLocal

MsgBox 表示形式

 
ちなみにこのコードは複数セル範囲に対しても実行でき、
例えばA列全体が文字列「@」になっていれば、

表示形式 = Columns("A").NumberFormatLocal

このコードでも表示形式を取得可能です。


ただし、セル範囲の表示形式が統一されていない場合は、
このコードは「Null」を返しますのでご注意ください。

セル範囲の表示形式が統一されているか判定する

上記の仕様をIsNull関数で判定することで、
あるセル範囲に別の表示形式が混じっていないか判定することも可能です。

If IsNull(セル範囲.NumberFormatLocal) Then
    ' 表示形式が統一されていない場合の処理
End If

 

特定の表示形式のセルにのみ処理を実行する

例えば「文字列書式のセルにのみ処理をする」コードはこのように記載します。

Dim セル As Range
For Each セル In 対象セル範囲.Cells
    If セル.NumberFormatLocal = "@" Then
        ' 文字列書式セルに対する処理
    End If
Next

 

セルの表示形式をコピーする

セルの表示形式のみをコピーする場合は以下のコードを実行します。

設定セル範囲.NumberFormatLocal = 表示形式コピー元.NumberFormatLocal

 
これは「セル範囲の表示形式を第1セルに合わせて統一する」場合にも流用でき、
以下のコードで表示形式の統一を行うことが可能です。

設定セル範囲.NumberFormatLocal = 設定セル範囲.Cells(1).NumberFormatLocal

 

以上でNumberFormatLocalプロパティの解説を終わります。

セルの表示形式を設定する場合はこちらのプロパティを使用してください。