プログラミング初心者を対象にExcelマクロ/VBAを使った業務自動化プログラムの作り方を一から解説します。今回は、セルの数値、フォント、文字位置、背景色、けい線など表示形式/書式設定の使い方に加え、書式の削除方法や形式を指定して貼り付けする方法も解説します【Windows 10、Excel 2016に対応】。
プログラミング初心者を対象にExcelマクロ/VBAを使った業務自動化プログラムの作り方を一から解説する本連載「Excelマクロ/VBAで始める業務自動化プログラミング入門」。今回は、前回の「Excelの基本オブジェクト「セル」の参照、移動、コピー、選択、挿入、削除」で解説し切れなかった、セルのさまざまな「書式」(表示形式)をVBAで扱う処理を解説する。
セルの書式設定も、日常の業務において多用される。数値を3桁区切りで表示したり、月日を年月日の表示にしたりと、使用頻度は高い。また、フォントや背景色、けい線などもよく使われる。これらを指定すると、味気なかったデータでも見栄えが良くなって、格好良いデータが出来上がる。また書式を使いこなすことは、データの読みやすさ、分かりやすさにも影響してくるので、大変有用だ。本稿では、さらに書式の一括削除や、結構使いどころが多い「書式のみの貼り付け方」も解説する。
この解説を参考に、マクロを自分なりにカスタマイズして、ぜひ職場の作業自動化に生かしてほしい。VBAを覚えると、いちいち手動で作業していたことがばからしく思えてくるに違いない。それほど、VBAはマスターすれば強力なツールとなるのだ。
まずは、セルの数値の表示形式の設定からだ。セルに書式を設定するにはRangeオブジェクトのNumberFormatLocalプロパティを使用する。書式(ここでは、マクロの書き方)は下記の通り。
Rangeオブジェクト.NumberFormatLocal={表示形式}
表示形式には、「数値の書式記号」表1と、「日付や時刻の書式記号」表2がある。
書式 | 説明 | 例 |
---|---|---|
# | 対応する数字で#記号を置き換える。#の位置に数値ないと、何も表示されない | 数値が「12345」のとき「###,###」と指定すると結果は「12,345」となる |
0 | 対応する数字でゼロを置き換える。桁の位置に数値がないと、「0」が表示される | 数値が「12」のとき「0000」と指定すると結果は「0012」となる。 |
, | 桁区切りのカンマの位置 | 数値が「12345」のとき「#,##0」と指定すると結果は「12,345」となる |
. | 小数点の位置 | 数値が「12」のとき「00.00」と指定すると結果は「12.00」となる |
% | パーセント形式 | 数値が「0.01」のとき「0%」と指定すると結果は「1%」となる。 |
\ | 通貨記号 | 数値が「12」のとき「\#,##0」と指定すると結果は「\12」となる |
参考:「Excel のセルの表示形式で [ユーザー定義] に使用できる書式記号について - MSDN」 |
書式 | 説明 |
---|---|
yyyy | 西暦を4桁で返す(1989、2002など) |
yy | 西暦を2桁で返す(89、02など) |
ggg | 年号を返す(明治、大正、昭和、平成) |
gg | 年号の省略形を返す(明、大、昭、平) |
g | 年号をアルファベットで返す(M、T、S、H) |
ee | 年号に基づく和暦を2桁で返す(01〜99) |
e | 年号に基づく和暦を1〜2桁で返す(1〜99) |
mmmm | 月を英語で返す(June、Augustなど) |
mmm | 月を英語の省略形で返す(Jun、Augなど) |
mm | 月を2桁で返す(01〜12) |
m | 月を1〜2桁で返す(1〜12) |
dd | 日付を2桁で返す(01〜31) |
d | 日付を1〜2桁で返す(1〜31) |
dddd | 曜日を英語で返す(Mon、Friなど) |
ddd | 曜日を英語の省略形で返す(Monday、Fridayなど) |
aaaa | 曜日を日本語で返す(日曜日〜土曜日) |
aaa | 曜日を日本語の省略形で返す(日〜土) |
hh | 時間を2桁で返す(00〜23) |
h | 時間を1〜2桁で返す(0〜23) |
mm | 分を2桁で返す(00〜59) |
m | 分を1〜2桁で返す(0〜59) |
ss | 秒を2桁で返す(00〜59) |
s | 秒を1〜2桁で返す(0〜59) |
AM/PM | 時刻に「AM」や「PM」を付けて返す |
A/P | 時刻に「A」や「P」を付けて返す |
参考:「Excel のセルの表示形式で [ユーザー定義] に使用できる書式記号について - MSDN」 |
では、図1のような表に表示形式を設定してみよう。
図1の画面に表示形式を設定して、図2のような表示にしてみよう。
図1と図2を比較すると分かるが、「入社日」「社員番号」「売上金額」に表示形式が設定されている。「入社日」が「年月日」表示となり、「社員番号」の頭に「000」が追加され、「売上金額」が三桁区切りで表示されている。
このような設定をするマクロはリスト1のように記述する。
Sub セルの数値の表示形式を設定() Range("B5:B9").NumberFormatLocal = "yyyy年mm月dd日" Range("C5:C9").NumberFormatLocal = "0000" Range("E5:E9").NumberFormatLocal = "#,###" End Sub
NumberForamtLocalの値については、表1、表2を参照してほしい。
Copyright © ITmedia, Inc. All Rights Reserved.