EXCEL VBA - 表示形式の取得と設定

表示形式の取得

表示形式を取得するには、NumberFormatLocal プロパティを使用します。NumberFormatLocal プロパティの値は、セルの書式設定の表示形式で指定されたものになります。

Debug.Print (Range("A1").NumberFormatLocal) ' G/標準
表示形式の取得

表示形式の設定

表示形式を設定するには、NumberFormatLocal プロパティを使用します。NumberFormatLocal プロパティの値は、セルの書式設定の表示形式で指定できるものと同じになります。

Range("A1").NumberFormatLocal = "yy/mm/dd"
表示形式の設定

数値の書式

数値の書式は # または 0 と 小数点を表す . そして桁区切りの , を使用します。# の場合は数値がない場合は無視されますが、0 の場合は 0 埋めされて表示されます。また、どちらの場合でも整数部分が書式に指定した文字数よりも多くてもそのまま表示されますが、小数点以下の部分は書式に指定した桁の位置で四捨五入されて表示されます。

Range("A1").NumberFormatLocal = "00.00"
数値の書式

桁区切りは #,### のように記述します。ただし、# だけで表現した場合、0 のときに値が表示されないため、通常は #,##0 のように記述します。

Range("A1").NumberFormatLocal = "#,##0"
数値の書式

また、0 ではなくスペースで桁を揃えて表示する場合は ? を使用します。? で書式を表した場合、小数点の位置が揃えて表示されます。

Range("A1").NumberFormatLocal = "?.???"
数値の書式

書式に色を指定することもできます。指定できる色は 8 色で、書式の先頭に [ ] の中に色名を記述して指定します。指定できる色名は [黒] [青] [水] [緑] [紫] [赤] [白] [黄] の 8 色です。

Range("A1").NumberFormatLocal = "[赤]0.000"
数値の書式

正と負で書式を分ける

正と負で書式を分割する場合、; を区切り文字として書式を分割します。

オブジェクト.NumberFormatLocal = "正の書式;負の書式"
正と負で書式を分ける

例えば、負の場合は赤文字にする場合は、以下のように記述します。

Range("A1").NumberFormatLocal = "#,##0;[赤]#,##0"
正と負で書式を分ける

また正と負、そしてゼロの場合も分割して書式を定義することもできます。

オブジェクト.NumberFormatLocal = "正の書式;負の書式;ゼロの書式"
正と負で書式を分ける

日付の書式

日付の書式は、以下のように定義されています。

日付の書式(年)
書式意味対象表示
yyyy西暦2020/05/022020
yy西暦2020/05/0220
g元号2020/05/02R
gg元号2020/05/02
ggg元号2020/05/02令和
e和暦2020/05/022
ee和暦2020/05/0202
range("A1:A7").Value = "2020/05/02"

Range("A1").NumberFormatLocal = "yyyy"
range("A2").NumberFormatLocal = "yy"
range("A3").NumberFormatLocal = "g"
range("A4").NumberFormatLocal = "gg"
range("A5").NumberFormatLocal = "ggg"
range("A6").NumberFormatLocal = "e"
range("A7").NumberFormatLocal = "ee"
日付の書式(年)
日付の書式(月・日・曜日)
書式意味対象表示
m2020/04/024
mm2020/04/0204
mmm2020/04/02Apr
mmmm2020/04/02April
d2020/04/022
dd2020/04/0202
ddd曜日(英語)2020/04/02Thu
dddd曜日(英語)2020/04/02Thursday
aaa曜日(日本語)2020/04/02
aaaa曜日(日本語)2020/04/02木曜日
range("A1:A10").Value = "2020/04/02"

Range("A1").NumberFormatLocal = "m"
range("A2").NumberFormatLocal = "mm"
range("A3").NumberFormatLocal = "mmm"
range("A4").NumberFormatLocal = "mmmm"
range("A5").NumberFormatLocal = "d"
range("A6").NumberFormatLocal = "dd"
range("A7").NumberFormatLocal = "ddd"
range("A8").NumberFormatLocal = "dddd"
range("A9").NumberFormatLocal = "aaa"
range("A10").NumberFormatLocal = "aaaa"
日付の書式(月・日・曜日)

時刻の書式

時刻の書式は、以下のように定義されています。ただし、m や mm 単体では「月」の書式文字とみなされるため、h や s と一緒に使うことで「分」の書式文字として使用できます。

日付の書式(時刻)
書式意味対象表示
h時間12:34:5612
hh時間12:34:5612
m12:34:5634
mm12:34:5634
s12:34:5656
ss12:34:5656
range("A1:A2").Value = "12:34:56"

Range("A1").NumberFormatLocal = "h:m:s"
range("A2").NumberFormatLocal = "hh:mm:ss"
日付の書式(時刻)

上記の時刻は、24 時間表記となっていますが、AM または PM を追加することで 12 時間表記とすることもできます。

range("A1:A2").Value = "12:34:56"

Range("A1").NumberFormatLocal = "h:m:s AM/PM"
range("A2").NumberFormatLocal = "hh:mm:ss AM/PM"
日付の書式(時刻)

文字の書式

セルに含まれている実際の値は @ で表すことができます。そのため、セルに含まれている文字の前後に任意の文字列を追加したい場合は、以下のように記述します。

Range("A1").NumberFormatLocal = """mailto:""@"

Range("A1").Value = "murashun@gmail.com"
文字の書式

関連記事