OfficeType

VBA~セルの表示形式を取得、設定しよう~Excel

VBAでセルの表示形式を取得、設定したい時はRange.NumberFormatLocalプロパティで取得できます。

下のコードを実行すると変数aにセルA1の表示形式"yyyy"年"m"月"d"日""が取得され、その変数aをセルA3の表示形式に設定しています。

Sub test1()

Dim a As Variant

a = Range("A1").NumberFormatLocal

Range("A3").NumberFormatLocal = a

End Sub

image-01

image-02

範囲の表示形式を取得

範囲を指定したい時はRange("範囲の左上のセル:範囲の右下のセル")で指定できます。下のコードを実行すると変数aにセルA1からセルA3に設定された表示形式"yyyy"年"m"月"d"日""が取得され、その変数aをセルA5からセルA7の表示形式に設定しています。表示形式が範囲内のセルで異なる種類が含まれる場合はNullが取得されるのでNumberFormatLocalに変数aを設定しても表示形式は設定されません。

Sub test2()

Dim a As Variant

a = Range("A1:A3").NumberFormatLocal

Range("A5:A7").NumberFormatLocal = a

End Sub

image-03

image-04

指定したシートの表示形式を取得

シートを指定するときはWorksheets("シート名")で指定できます。下のコードを実行すると変数aにSheet1のセルA1の表示形式"yyyy"年"m"月"d"日""が取得され、その変数aをSheet2のセルA1の表示形式に設定しています。

Sub test3()

Dim a As Variant

a = Worksheets("Sheet1").Range("A1").NumberFormatLocal

Worksheets("Sheet2").Range("A1").NumberFormatLocal = a

End Sub

image-05

image-06

image-07

ブックを指定して表示形式を取得

ブックを指定するときはWorkbooks("ブック名")で指定できます。Book1.xlsxとBook2.xlsxというブックが開いた状態で下のコードを実行すると変数aにBook1.xlsxのSheet1のセルA1の表示形式"yyyy"年"m"月"d"日""が取得され、その変数aをBook2.xlsxのSheet1のセルA1の表示形式に設定しています。

Sub test4()

Dim a As Variant

a = Workbooks("Book1.xlsx").Worksheets("Sheet1").Range("A1").NumberFormatLocal

Workbooks("Book2.xlsx").Worksheets("Sheet1").Range("A1").NumberFormatLocal = a

End Sub