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
範囲の表示形式を取得
範囲を指定したい時は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
指定したシートの表示形式を取得
シートを指定するときは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
ブックを指定して表示形式を取得
ブックを指定するときは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