サイトについて      連絡先   検索

VBA セルの表示形式を取得する

はじめに

Excel VBA のセルの表示形式を取得する方法を紹介します。

Range.NumberFormatLocal プロパティか Cells.NumberFormatLocal プロパティから表示形式を取得できます。

表示形式

Excel で表示形式を設定するには、セルを右クリックして「セルの書式設定」をクリックします。

1

セルの表示形式を取得する

Range の引数にセル名を指定すると、そのセルの表示形式を取得できます。

セル「A1」の表示形式を取得するには Range("A1").NumberFormatLocal のように指定します。

Dim s As String
s = Range("A1").NumberFormatLocal
Debug.Print(s)

Cells の引数にセルの行と列の番号を指定すると、そのセルの表示形式を取得できます。

行「2」、列「A」の表示形式を取得するには Cells(2, 1).NumberFormatLocal のように指定します。

Dim s As String
s = Cells(1, 1).NumberFormatLocal ' A1
s = Cells(2, 1).NumberFormatLocal ' A2
s = Cells(1, 2).NumberFormatLocal ' B1
s = Cells(2, 2).NumberFormatLocal ' B2
Debug.Print(s)

表示形式の分類の初期値は次の値が取得されます。

分類名
標準"G/標準"
数値"0_ "
通貨"\#,##0;\-#,##0"
会計"_ * #,##0_ ;_ * -#,##0_ ;_ * "-"_ ;_ @_ "
日付"yyyy/m/d"
時刻"[$-F400]h:mm:ss AM/PM"
パーセンテージ"0%"
分数"# ?/?"
指数"0.E+00"
文字列"@"
その他"[<=999]000;[<=9999]000-00;000-0000"

セルの範囲の表示形式を取得する

セルの範囲「A1」~「B2」の表示形式を取得するには Range("A1:B2").NumberFormatLocal または Range("A1", "B2").NumberFormatLocal のように指定します。

Dim s As String
s = Range("A1:B2").NumberFormatLocal
s = Range("A1", "B2").NumberFormatLocal
Debug.Print(s)

指定した範囲の表示形式が全て同じであれば、その値を取得します。一つでも違う値があれば Null が取得されます。

指定したシートのセルの表示形式を取得する

Range.NumberFormatLocal とコードに書くと、アクティブなシートのセルの表示形式を取得します。これは ActiveSheet.Range.NumberFormatLocal の ActiveSheet が省略されています。

' どちらも同じコード
Dim s As String
s = Range("A1").NumberFormatLocal
s = ActiveSheet.Range("A1").NumberFormatLocal

シートを指定するには Sheets の引数にシート名またはインデックスを指定します。

1

Sheet1 のシートを指定するには、Sheets("Sheet1") か Sheets(1) と書きます。

Dim s As String
' Sheet1 のセル「A1」の表示形式を取得
s = Sheets("Sheet1").Range("A1").NumberFormatLocal
s = Sheets(1).Range("A1").NumberFormatLocal
Debug.Print(s)

' Sheet2 のセル「A1」の表示形式を取得
s = Sheets("Sheet2").Range("A1").NumberFormatLocal
s = Sheets(2).Range("A1").NumberFormatLocal
Debug.Print(s)

関連ページ