VBA入門
セルの書式(表示形式,NumberFormatLocal)

ExcelマクロVBAの基本と応用、エクセルVBAの初級・初心者向け解説
公開日:2013年5月以前 最終更新日:2023-07-12

第31回.セルの書式(表示形式,NumberFormatLocal)


セルは表示形式を指定することで、セルに入っている値は同じ値でも色々な見え方をさせる事が出来ます。
セルの値はそのままで、見た目をユーザーに見やすい形にすることが出来ます。


同じ数値の、12345でも
12345
12,345
\12,345
等々の違う表示方法を指定する事が出来ます。

しかしあくまでセルに入っている数値は同じ、12345です。
計算等においては同一として扱えます。
あくまで、画面上での見え方を変えているだけです。


マクロでの表示書式の指定

Range.NumberFormatLocal = "表示書式指定文字"

Range.は、Range・Cells・Rows・Columns等、Rangeオブジェクトになります。
NumberFormatLocalは、Rangeオブジェクトのプロパティです。

例.
Range.NumberFormatLocal = "@" '文字列
Range.NumberFormatLocal = "#,###"'カンマ区切りで0サプレス
Range.NumberFormatLocal = "0.00" '小数点2桁固定
Range.NumberFormatLocal = "yyyy/mm/dd" '日付、月・日を2桁


表示書式指定文字

ワークシートで、「セルの書式設定」→「表示形式」
ここで、「ユーザー定義」で指定する、書式指定文字と同じです。
書式指定文字は、多くの指定方法があります。
代表的なところを掲示します。

書式指定文字

説明
G/標準 標準の表示形式です。
_(アンダーバー) _(アンダーバー)に続く文字の幅だけ文字間隔を空けることができます。
" 「"」で囲まれた文字列を表示します。
入力値を文字列としてそのまま表示します。
# 小数点のいずれの側でも表示形式の # 記号の数より少ない場合に 0 は表示されません。
0 数値の桁数が表示形式の 0 の桁数より少ない場合に、表示形式の桁まで 0 が付加されます。
? 有効桁以外の 0 にスペースが挿入されるため、列内で小数点の位置が整列されます。
. (ピリオド) 数値に小数点を表示します。
,(カンマ) 数値に桁区切り記号を表示します。
yy 年を2桁の数値で表示します。
yyyy 年を4桁の数値で表示します。
g 元号のアルファベット1文字が表示されます。M,T,S,Hが表示できます。
gg 元号の1文字が表示されます。明,大,昭,平
ggg 元号が表示できます。明治,大正,昭和,平成
e 年数が1桁で表示されます。
m 月数を表示します。1~12が表示できます。
mm 01~12が表示できます。1~9は01~09と0付で表示されます。
mmm Jan~Dec
mmmm January~December
mmmmm J~D頭文字が表示されます。
d 日数を表示します。1~31が表示できます。
dd 01~31が表示できます。
ddd Sun~Sat
dddd Sunday~Saturday
aaa 日~土
aaaa 日曜日~土曜日
h 時を表示します。0~23が表示できます。
hh 00~23が表示できます。
m 分を表示します。0~59が表示できます。
mm 00~59が表示できます。
s 秒を表示します。0~59が表示できます。
ss 00~59が表示できます。
[h] 24時を超える時間を表示します。
[m] 60分を超える分を表示します。
[s] 60秒を超える秒を表示します。

上記は全てではありません、マクロVBAで使う可能性の高いものだけにしています。


表示書式指定文字の調べ方

そもそも表示形式の指定は、

正の数の書式;負の数の書式;ゼロの書式;文字列の書式

このように指定するものですが、これはエクセルの基本として押さえて置いてください。

一度設定したら変更することが無いのであれば、マクロではなくシートにあらかじめ設定しておく方が効率的です。
マクロで表示形式を指定するのは、特殊な部分に限定した方が良いでしょう。

マクロで書式を設定する時に、書式文字が分からない場合は、
「ユーザー定義」で表示を確認して使えば良いでしょう。

もし、「セルの書式設定」→「表示形式」→「ユーザー定義
これが解らない場合は、
申し訳ないが、マクロの前にエクセルの基本を学び直してください。

表示形式.ユーザー定義の基礎
・ユーザー定義の設定方法 ・ユーザー定義の基本 ・数値 ・・・ 書式文字列 ・日付 ・・・ 書式文字列 ・時刻 ・・・ 書式文字列 ・特殊文字(書式文字等の記号)を固定文字表示


Range.NumberFormatについて

最期に、Localが付かない、NumberFormatというプロパティがある事をお伝えしておきます。
ほぼ同じなのですが、同じ書式指定文字でも表示に違いがでてくる場合があります。

Localと付くものと付かないものの違いは、PC環境に依存するかどうかです。
Localと付くものはPC環境に依存する設定を有効にする場合に使います。

代表的な所では、
12345 → \12,345 と表示したい時、
Range("A1").NumberFormat = "\#,##0"
これでは期待した形式になりません。
"\"は、次に続く特殊文字をそのまま表示する記号として扱われてしまいます。
Range("A1").NumberFormatLocal = "\#,##0"
これであれば、期待通りに表示されます。
しかし、
その違いを追及するより、NumberFormatLocalのみ使用するようにした方が手っ取り早いと思います。


実際に表示されている形式の文字列を取得

RangeのValueブロパティは、セルに入力されている値(数式バーに表示される値)が取得されます。
表示形式の指定により、実際の値とは違う形式で表示されている文字列を取得するにはTextプロバティを使用します。
また、日付時刻表示のセル値を数値で取得する場合はValue2プロバティを使用します。

セルに「2023/6/20」を入れ、表示形式を「yyyy"年"mm"月"dd"日"」とした場合、
Value : 2023/06/20 ・・・ 日付型
Value2 : 45097 ・・・ 倍精度浮動小数点型
Text : 2023年06月20日 ・・・ 文字列型

セルの値について(Value,Value2,Text)|VBA技術解説
マクロVBAにおいて、セルの値を操作する事は基本の基本ですが、意外に理解できていない場合が多いようです。Value 指定されたセル範囲の値を表すバリアント型(Variant)の値を設定します。値の取得および設定が可能です。

以下も参考にしてください。
セル幅不足による###表示や指数表示を判定する
・Range.Textブロバティ ・列幅不足を判定するVBA ・セル幅不足を判定するVBAの使用例


表示形式は、エクセルの基本中の基本です。
しっかりと押さえておいて下さい。





同じテーマ「マクロVBA入門」の記事

第28回.セル・行・列の選択(Select,ActivateとCurrentRegion)

・選択セルとアクティブセル ・セルの選択 ・セルをアクティブにする ・行の選択、列の選択 ・セル領域の選択 ・メソッドとはプロパティとは
第29回.セル・行・列の削除・挿入(Delete,Insert)
・セルの削除 ・セルの挿入 ・セルの削除・挿入時は、Shift:=は必ず指定 ・行・列の削除・挿入 ・行・列の削除/行・列の挿入で、Shift:=は必要か ・行・列の表示・非表示
第30回.総合練習問題3
・マクロVBA練習問題 ・シンキングタイム ・マクロVBA練習問題解答へ
第31回.セルの書式(表示形式,NumberFormatLocal)
第32回.セルの書式(配置,Alignment)
セル内での値を表示する位置(縦位置、横位置)をマクロVBAで指定できます。「セルの書式設定」→「配置」で指定する内容です。マクロVBAでの配置の指定 Range.プロパティ=設定値 指定できるプロパティの設定値は以下になります。
第33回.セルの書式(フォント,Font)
・マクロでの指定 ・色定数 ・RGB関数 ・色の指定を解除(自動) ・フォント(Font)設定についての注意点
第34回.セルの書式(塗りつぶし,Interior)
・マクロVBAでのInterior指定 ・色定数 ・RGB関数 ・塗りつぶしなし ・条件付き書式との使い分け
第35回.セルの書式(罫線,Border)
・A1セル~B5セルに格子線を引いた時のマクロの記録 ・マクロVBAでの罫線指定 ・Bordersのプロパティ ・Range.BorderAroundメソッド ・マクロVBAでの罫線の注意点
第36回.総合練習問題4
・マクロVBA練習問題 ・シンキングタイム ・マクロVBA練習問題解答へ
第37回.ブック・シートの指定
・マクロVBAでのブック・シート指定の具体例 ・マクロVBAでのブック・シート指定の必要性 ・VBAでの色々なシート指定方法
第39回.セルのクリア(Clear,ClearContents)
・セル(Rangeオブジェクト)のクリア関係のメソッド(動作を与える) ・Range.Clear ・Range.ClearContents ・クリア関係メソッドについて


新着記事NEW ・・・新着記事一覧を見る

TRIMRANGE関数(セル範囲をトリム:端の空白セルを除外)|エクセル入門(2024-08-30)
正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)|エクセル入門(2024-07-02)
エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)
ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.RangeとCellsの使い方|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.セルのクリア(Clear,ClearContents)|VBA入門
8.メッセージボックス(MsgBox関数)|VBA入門
9.条件分岐(Select Case)|VBA入門
10.マクロとは?VBAとは?VBAでできること|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。


このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ