【Excel VBA】マクロで表示形式(書式)を設定する

Excelマクロで業務効率向上

こんにちは、タクローです。

Excelを使っていると体裁を整えるため、入力したデータの表示形式を設定することはよくあることだと思います。

具体的には、右クリックから「セルの書式設定」を表示して、「表示形式」タブで設定するヤツですね。

Excelセルの書式設定

今回は、この処理をマクロ(Excel VBA)を使って設定する方法を解説します。

NumberFormatLocalプロパティ

「表示形式」を設定するには、RangeオブジェクトのNumberFormatLocalプロパティを使用します。

「表示形式」を設定したセルに対し、NumberFormatLocalプロパティを使って値を入れるだけなので、難しいことは特にありません。

NumberFormatLocalプロパティで使われる値の詳細については以下のサイトを参考にしてみてください。

わかりやすくまとまっています。

セルの書式(表示形式,NumberFormatLocal)|VBA入門
セルは表示形式を指定することで、セルに入っている値は同じ値でも色々な見え方をさせる事が出来ます。セルの値はそのままで、見た目だけをユーザーに見やすい形にすることが出来ます。同じ数値の、12345でも 12345、12,345、,345 等々の違う表示方法を指定する事が出来ます。

NumberFormatLocalプロパティで使われる値はたくさんありますが、ご自分で表示したい値を組み合わせて使っていくことになります。

ここで、具体的な例を挙げてみたいと思います。

下のコードをご覧ください。

With Worksheets("Sheet1")
        .Range("A1").NumberFormatLocal = "G/標準"
        .Range("A2").NumberFormatLocal = "@"
        .Range("A3").NumberFormatLocal = "###,##0"
        .Range("A4").NumberFormatLocal = "¥#,##0"
        .Range("A5").NumberFormatLocal = "0.00"
        .Range("A6").NumberFormatLocal = "0.00%"
        .Range("A7").NumberFormatLocal = "ggge年mm月dd日(aaa)"
        .Range("A8").NumberFormatLocal = "aaaa"
        .Range("A9").NumberFormatLocal = "yyyy/mm/dd"
        .Range("A10").NumberFormatLocal = "yy/m/d"
        .Range("A11").NumberFormatLocal = "yyyy/mm/dd hh:mm:ss"
        .Range("A12").NumberFormatLocal = "h:m:s"
        .Range("A13").NumberFormatLocal = "h時m分s秒"
        .Range("A14").NumberFormatLocal = "今はh:m:sです。"
End With

このマクロを実行した結果は以下のとおりです。

NumberFormatLocalプロパティのサンプル

B列はマクロ実行前の表示形式、つまり初期値です。

A列はマクロ実行後の値になります。

黄色で塗りつぶしたセルは、今日の日付を返す「=TODAY()」関数が入力されています。

緑色で塗りつぶしたセルは、現在の日時を解す「=NOW()」関数が入力されています。

ご覧になってお気づきだと思いますが、「年」、「月」、「日」や「¥」、さらに「:」などの任意の文字列と表示形式の値をつなぎ合わせることができるんです。

セルA14みたいな使い方でもオッケーです。

今回の例で挙げたNumberFormatLocalプロパティの値は下の表のとおりです。

G/標準 標準の表示形式になります。
@ 入力した値を文字列として表記しています。
###,##0 カンマ区切りの数値を表記しています。
¥#,##0 カンマ区切りで、「¥」を付けて通貨として、表記しています。
0.00 小数点を2桁固定で数値を表記しています。
0.00% 小数点2桁固定でパーセント表記しています。
ggge年mm月dd日(aaa) 今日の日付を元号表記、月、日は2桁表記しています。曜日は「日」~「土」のように表記しています。
aaaa 今日の日付の曜日を「〇曜日」と表記しています。
yyyy/mm/dd スラッシュで区切って年月日を表記しています。年は4桁、月日は「0(ゼロ)」を付けた2桁表記しています。
yy/m/d スラッシュで区切って年月日を表記しています。年は2桁、月日は頭に「0(ゼロ)」を付けないで表記しています。
yyyy/mm/dd hh:mm:ss スラッシュで区切って年月日、コロンで区切って時分秒を表記しています。年は4桁、その他は「0(ゼロ)」を付けた2桁表記しています。
h:m:s コロンで区切って時分秒を表記しています。頭に「0(ゼロ)」を付けないで表記しています。
h時m分s秒 時分秒を頭に「0(ゼロ)」を付けないで表記しています。
今はh:m:sです。 任意の文字列とともに表記することも可能です。

使う値がわからなかったら

NumberFormatLocalプロパティの値で、表示形式を設定できることはおわかりいただけたと思います。

ただ、この値…。

いざ、NumberFormatLocalプロパティを使う時、「あれっ、何て値を設定すればいいんだっけ?」とついつい忘れがちです。

そんな時は、「マクロの記録」をしてしまいましょう。

それが手っ取り早いです。

本を引っ張ってきて調べたり、前に書いたコードを探したりして、これが結構時間のロスだったりするわけです。

右クリックから「セルの書式設定」を表示して、「表示形式」タブで設定

この操作のマクロを記録して、できたコードをパクッてしまえばそれで解決です。

まとめ

今回は、「セルの表示形式」について解説しました。

「セルの表示形式」は、Excelで作った資料を見やすくするために、必ず見直しているはずです。

いつも決まったフォーマットの資料を作成しているのであれば、ここでマクロの出番です。

ちょっとした知識で、業務効率をグッと上げることができます

面倒な操作はマクロに任せてしまいましょう

最後まで、お付き合いいただき、ありがとうございました。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする