■ セルの書式の設定をマスターしよう!
数回にわたってワークシート上のセルを操作するExcel VBAについて解説を行います。
今回はセルの書式を設定する様々な方法について解説していきます。
セルの書式を設定する
■セルのフォントを設定する
セルの文字列を操作するには、Fontオブジェクトを使用します。
・Nameプロパティ
セルの表示フォントを設定することができます。
例:
Range("A1").Font.Name = "MS ゴシック"
Range("A2").Font.Name = "Verdana"
上の例では、アクティブシートの「A1」セルに「MS ゴシック」のフォントを、「A2」セルに「Verdana」のフォントを、それぞれ設定します。 |
・Sizeプロパティ
セルのフォントサイズを設定することができます。
例:
Range("A1").Font.Size = 12
Range("A2").Font.Size = 18
上の例では、アクティブシートの「A1」セルのフォントサイズを「12」に、「A2」セルのフォントサイズを「18」に、それぞれ設定します。 |
・Boldプロパティ、Italicプロパティ
Boldプロパティは文字を太字に、Italicプロパティは斜体に設定します。
例:
Range("A1").Font.Bold = True
Range("A2").Font.Italic = True
上の例では、アクティブシートの「A1」セルのフォントを太字に、「A2」セルのフォントを斜体に、それぞれ設定します。Falseを指定すると、設定を解除します。 |
・Underlineプロパティ、Strikethroughプロパティ
Underlineプロパティは文字に下線を、Strikethroughプロパティは取り消し線を設定します。
例:
Range("A1").Font.Underline = True
Range("A2").Font.Strikethrough = True
上の例では、アクティブシートの「A1」セルの文字に下線を、「A2」セルの文字に取り消し線を、それぞれ設定します。Falseを指定すると、設定を解除します。 |
※ Underlineプロパティはさらに、XlUnderlineStyleクラスの定数を使って下線の種類を指定することができます。
定数 |
内容 |
xlUnderlineStyleNone |
下線なし |
xlUnderlineStyleSingle |
下線 |
xlUnderlineStyleDouble |
二重下線 |
xlUnderlineStyleSingleAccounting |
会計下線 |
xlUnderlineStyleDoubleAccounting |
会計二重下線 |
・ColorIndexプロパティ
文字の色を設定します。
例:
Range("A1").Font.ColorIndex = 3
Range("A2").Font.ColorIndex = 5
上の例では、アクティブシートの「A1」セルの文字色を赤に、「A2」セルの文字色を青に、それぞれ設定します。 |
※ ColorIndexプロパティに指定するカラーパレットのよく使う色は次の通りです。
番号 |
色 |
番号 |
色 |
番号 |
色 |
番号 |
色 |
番号 |
色 |
番号 |
色 |
番号 |
色 |
1 |
黒 |
2 |
白 |
3 |
赤 |
4 |
緑 |
5 |
青 |
6 |
黄 |
7 |
紫 |
・Superscriptプロパティ、Subscriptプロパティ
Superscriptプロパティはセル内の文字を上付きに、Subscriptプロパティは下付きに、それぞれ設定します。
例:
Range("A1").Font.Superscript = True
Range("A2").Font.Subscript = True
上の例では、アクティブシートの「A1」セルの文字を上付きに、「A2」セルの文字を下付きに、それぞれ設定します。Falseを指定すると、設定を解除します。 |
■セルの罫線を設定する
セルの罫線を操作するには、Borderオブジェクトを使用します。
・Bordersプロパティ、LineStyleプロパティ、Weightプロパティ
Bordersプロパティは、セルに設定されている罫線を取得します。LineStyleプロパティは、罫線の種類を指定します。Weightプロパティは、罫線の太さを指定します。
[書式]
オブジェクト.Borders(位置)
オブジェクトには罫線を設定するセル範囲を指定します。
位置には、次のXlBordersIndexクラスの定数を指定します。
定数 |
内容 |
定数 |
内容 |
xlEdgeTop |
上端の線 |
xlInsideHorizontal |
内側の横線 |
xlEdgeBottom |
下端の線 |
xlInsideVertical |
内側の縦線 |
xlEdgeLeft |
左端の線 |
xlDiagonalDown |
右下がり斜線 |
xlEdgeRight |
右端の線 |
xlDiagonalUp |
右上がり斜線 |
[書式]
オブジェクト.LineStyle = 種類
オブジェクトにはBorderオブジェクトを指定します。
種類には、次のXlLineStyleクラスの定数を指定します。
定数 |
内容 |
定数 |
内容 |
xlContinuous |
一重線 |
xlDot |
点線 |
xlDash |
破線 |
xlDouble |
二重線 |
xlDashDot |
鎖線(1点) |
xlSlantDashDot |
破線 |
xlDashDotDot |
鎖線(2点) |
xlLineStyleNone |
なし |
[書式]
オブジェクト.Weight = 太さ
オブジェクトにはBorderオブジェクトを指定します。
太さには、次のXlBorderWeight クラスの定数を指定します。
定数 |
内容 |
定数 |
内容 |
xlHairline |
極細線 |
xlMedium |
中線 |
xlThin |
細線 |
xlThick |
太線 |
例:
With Range("A1").Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThick
End With
この例では、アクティブシートの「A1」セルの下端に実線を引いた後、太さを太線に変更しています。 |
(注意)LineStyleプロパティとWeightプロパティは、同時に設定できない組み合わせがあるので注意してください。
・BorderAroundメソッド
セル範囲の周囲に、線種、太さ、色を指定して一度に罫線を引きます。
[書式]
オブジェクト.BorderAround 線種, 太さ, 色
オブジェクトには罫線を設定するセル範囲を指定します。
線種の指定は、LineStyleプロパティと同じです。また、太さの指定は、Weightプロパティと同じです。なお、引数「線種」と引数「太さ」は同時に指定できません。
色には、カラーパレットのインデックス番号を指定します。
例:
Range("A1").BorderAround , xlThin, 3
Range("B2:D4").BorderAround xlDot, , 5
上の例ではアクティブシートの「A1」セルの周囲に赤色の細線を、下の例では「B2〜D4」のセル範囲の周囲に青色の点線を、それぞれ描画します。 |
※ 罫線を消去するには、LineStyleプロパティに「xlNone」を指定します。ワークシートのすべての罫線を消去するには「Cells.Borders.LineStyle = xlNone」を記述します。
■セルの背景色を設定する
セルの背景色を操作するには、Interiorオブジェクトを使用します。
・ColorIndexプロパティ、Colorプロパティ
ColorIndexプロパティはカラーパレットのインデックス番号で、ColorプロパティはRGB関数のRGB値で、それぞれセルの背景色を設定します。
例:
Range("A1").Interior.ColorIndex = 3
Range("A2").Interior.Color = RGB(255, 0, 0)
上の例では、アクティブシートの「A1」セルの背景色を、下の例では「A2」セルの背景色を、それぞれ赤色に設定します。 |
※ セルの背景色や文字色にRGB値を指定した場合、カラーパレットの中で一番近い色に自動的に設定されます。
・Patternプロパティ、PatternColorIndexプロパティ
Patternプロパティはセルの背景に設定する網かけパターンを、PatternColorIndexプロパティはパターンの色を、それぞれ設定します。
Patternプロパティに指定する網かけパターンの種類には、次の定数を指定します。
定数 |
内容 |
定数 |
内容 |
xlSolid |
塗りつぶし |
xlUp |
右上がり縞 |
xlGray75 |
75%灰色 |
xlChecker |
斜線格子 |
xlGray50 |
50%灰色 |
xlSemiGray75 |
極太斜線格子 |
xlGray25 |
25%灰色 |
xlLightHorizontal |
細横縞 |
xlGray16 |
12.5%灰色 |
xlLightVertical |
細縦縞 |
xlGray8 |
6.25%灰色 |
xlLightDown |
細右下がり縞 |
xlHorizontal |
横縞 |
xlLightUp |
細右上がり縞 |
xlVertical |
縦縞 |
xlGrid |
格子 |
xlDown |
右下がり縞 |
xlCrissCross |
細斜線格子 |
例:
Sub Test()
Range("A1").Interior.Pattern = xlGray25
Range("A1").Interior.PatternColorIndex = 3
End Sub
このプロシージャを実行すると、アクティブシートの「A1」セルに25%の網かけをした後、パターンの色を赤色に変更します。 |
※ 網かけの設定を解除するときは、Patternプロパティに「xlSolid」を指定します。
■セルの表示形式を設定する
セルの表示形式を設定するには、NumberFormatLocalプロパティを使用します。セルの表示形式を設定するには、書式記号を用います。主な書式記号は次の通りです。
・数値の書式記号
書式記号 |
内容 |
書式 |
対象 |
表示結果 |
# |
1桁を表す |
##.## |
1.2 |
1.2 |
0 |
1桁を表す |
00.00 |
1.2 |
01.20 |
, |
桁区切り |
#,### |
12345 |
12,345 |
. |
小数点 |
0.0 |
12.345 |
12.3 |
・日付の書式記号
書式記号 |
内容 |
対象 |
表示結果 |
yyyy |
西暦 |
2009/01/01 |
2009 |
yy |
西暦 |
2009/01/01 |
09 |
g |
和号 |
2009/01/01 |
H |
gg |
和号 |
2009/01/01 |
平 |
ggg |
和号 |
2009/01/01 |
平成 |
e |
和暦 |
1997/01/01 |
9 |
ee |
和暦 |
1997/01/01 |
09 |
m |
月 |
2009/01/01 |
1 |
mm |
月 |
2009/01/01 |
01 |
mmm |
月 |
2009/01/01 |
Jan |
mmmm |
月 |
2009/01/01 |
January |
d |
日 |
2009/01/01 |
1 |
dd |
日 |
2009/01/01 |
01 |
ddd |
曜日 |
2009/01/01 |
Thu |
dddd |
曜日 |
2009/01/01 |
Thursday |
aaa |
曜日 |
2009/01/01 |
木 |
aaaa |
曜日 |
2009/01/01 |
木曜日 |
・時刻の書式記号
書式記号 |
内容 |
対象 |
表示結果 |
h |
時間 |
11:05:59 |
11 |
hh |
時間 |
11:05:59 |
11 |
m |
分 |
11:05:59 |
5 |
mm |
分 |
11:05:59 |
05 |
s |
秒 |
11:05:59 |
59 |
ss |
秒 |
11:05:59 |
59 |
・文字の書式記号
書式記号 |
内容 |
書式 |
対象 |
表示結果 |
@ |
文字列 |
国名:@ |
日本 |
国名:日本 |
・表示形式の区分
セルの表示形式はセルの値が、正の数、負の数、ゼロ値、文字列の場合に応じて書式を分けることが可能です。その場合は、「;」で各書式を区切ります。
例:
#,##0;[赤]#,##0;"未入力";"不正な値:"@
この例の表示形式を設定したセルに、正の数、負の数、ゼロ値、文字列を入力すると、次のように表示されます。
入力値 |
表示結果 |
12345 |
12,345 |
-100 |
100 |
0 |
未入力 |
ABC |
不正な値:ABC |
|
また赤色以外にも、表示する色を書式で設定することが可能です。使用できる色は、
[黒] [青] [水] [緑] [紫] [赤] [白] [黄] |
の8色です。
・NumberFormatLocalプロパティ
ここまでに紹介した書式記号を用いて、セルに表示形式を設定することができます。
[書式]
オブジェクト.NumberFormatLocal = 表示形式
オブジェクトには、表示形式を設定するセル範囲を指定します。
表示形式には、書式記号を使用した書式を指定します。
例:
Range("A1").NumberFormatLocal = "#,##0;[赤]#,##0"
Range("A2").NumberFormatLocal = "ggge""年""m""月""d""日""(aaa)"
上の例では、アクティブシートの「A1」セルに、正の数は黒字、負の数は赤字で、桁区切り記号付きで数値を表示する表示形式を設定します。下の例では、「A2」セルに和暦年、月、日(曜日)で日付を表示する表示形式を設定しています。 |
※ 表示形式の中で「"」を用いるときは、「""」と2つのダブルクォーテーションを使用して記述します。
■セルの文字配置を設定する
セル内の文字配置を設定するには、Rangeオブジェクトのプロパティを使用します。
・HorizontalAlignmentプロパティ、VerticalAlignmentプロパティ
HorizontalAlignmentプロパティはセル内の文字の横位置を、VerticalAlignmentプロパティは縦位置を、それぞれ設定します。
HorizontalAlignmentに指定する値は、次の定数を使用します。
定数 |
内容 |
xlGeneral(既定) |
標準 |
xlLeft |
左詰め |
xlCenter |
中央揃え |
xlRight |
右詰め |
xlFill |
繰り返し |
xlJustify |
両端揃え |
xlCenterAcrossSelection |
選択範囲内で中央 |
xlDistributed |
均等割り付け |
VerticalAlignmentに指定する値は、次の定数を使用します。
定数 |
内容 |
xlCenter(既定) |
中央揃え |
xlTop |
上詰め |
xlBottom |
下詰め |
xlJustify |
両端揃え |
xlDistributed |
均等割り付け |
例:
Sub Test()
Range("A1").HorizontalAlignment = xlCenter
Range("A1").VerticalAlignment = xlBottom
End Sub
このプロシージャを実行すると、アクティブシートの「A1」セルの文字の横位置が中央揃えに、縦位置が下詰めに、それぞれ設定されます。 |
※ HorizontalAlignmentプロパティやVerticalAlignmentプロパティの設定が「均等割り付け」の場合、AddIndentプロパティを使用して文字の前後にスペースを挿入することができます。AddIndentプロパティの設定値はTrueまたはFalseで、Trueのとき文字の前後にスペースを挿入します。
・IndentLevelプロパティ
IndentLevelプロパティは、セル内の文字にインデントを挿入するときに使用します。挿入するインデント値は0から15までの数値になります。このとき全角1文字の幅がインデント値の1にあたります。
※ IndentLevelプロパティを設定すると、HorizontalAlignmentプロパティの設定は、自動で「左詰め」に設定されます。
例:
Range("A1").IndentLevel = 1
この例では、アクティブシートの「A1」セルに全角1文字分のインデントを設定します。 |
・WrapTextプロパティ、ShrinkToFitプロパティ
WrapTextプロパティは、文字を折り返して全体を表示します。ShrinkToFitプロパティは、文字を縮小して全体を表示します。
WrapTextプロパティ、ShrinkToFitプロパティの設定値はいずれもTrueまたはFalseで、Trueのときに設定が有効になります。ただし、両方のプロパティを同時に有効にすることはできません。
例:
Range("A1").WrapText = True
Range("A2").ShrinkToFit = True
上の例では、アクティブシートの「A1」セルの文字を折り返して全体を表示します。下の例では、「A2」セルの文字を縮小して全体を表示します。 |
・Orientationプロパティ
セル内の文字列の表示する角度を設定します。「-90〜90」の範囲の数値で角度を指定します。また「xlVertical」で縦書きに、「xlHorizontal」で横書き(通常の表示)にすることができます。
例:
Range("A1").Orientation = 90
Range("A2").Orientation = xlVertical
上の例では、アクティブシートの「A1」セルの文字列を時計の反対方向に90度回転させます。下の例では、「A2」セルの文字列を縦書きに変更します。 |
以上、セルの書式を設定するいろいろな方法について解説しました。
VBAからセルの書式を自由に操作することで、さらにユーザーが使いやすい、操作性の良いワークシートを設計することが可能です。今回の解説を役立ててください。
次は、シートの行・列を操作する様々な方法について詳しく解説を行います。
|