今回はExcel VBA、罫線を引く方法について解説していきます。
Excel VBAを使っていると、罫線を引く機会は結構あるのではないでしょうか。
表計算ソフトウェアですので、罫線をキレイに引くことで見映えが変わってきます。
キレイで上質な表に「こだわりたい!」なんていう方もいらっしゃると思います。
ただ、こだわればそれだけ面倒な作業が必要になってきます。
罫線を引くVBAをマスターして、面倒な作業を自動化して効率化しちゃいましょう!
Borderオブジェクト
罫線を引くためには、Borderオブジェクトを生成する必要があります。
セル範囲などのオブジェクトに対し、Bordersプロパティ、あるいはBordersのItemプロパティを使用して、Borderオブジェクトを生成します。
Bordersプロパティ、BordersのItemプロパティに引数を指定することで、どの罫線を操作するか決めることができます。
簡単に書くと以下のとおりです。
- セル範囲などのオブジェクト .Borders( 定数 )
- セル範囲などのオブジェクト .Borders.Item( 定数 )
どの罫線を操作するかを決めるために、プロパティの引数としてカッコの中に定数を指定する必要があります。
引数となる定数は下表のとおりです。
定数 | 値 | 内容 |
---|---|---|
xlDiagonalDown | 5 | 範囲内の各セルの左上隅から右下への罫線 |
xlDiagonalUp | 6 | 範囲内の各セルの左下隅から右上への罫線 |
xlEdgeLeft | 7 | 範囲内の左端の罫線 |
xlEdgeTop | 8 | 範囲内の上側の罫線 |
xlEdgeBottom | 9 | 範囲内の下側の罫線 |
xlEdgeRight | 10 | 範囲内の右端の罫線 |
xlInsideVertical | 11 | 範囲内のすべてのセルの垂直罫線 |
xlInsideHorizontal | 12 | 範囲内のすべてのセルの水平罫線 |
Dim obj as Border
Set obj = Range("A1").Borders(xlEdgeBottom)
上の例では、セル「A1」の下側の罫線に対し操作するためのオブジェクトを生成しています。
プロパティの引数「(xlEdgeBottom)」は省略することもできます。
省略する場合は、カッコも書きません。
プロパティの引数を省略した場合、個々のセルを囲む4本の罫線に対し操作することになります。
また、生成したBorderオブジェクトだけでは罫線を引くことはできません。
生成したBorderオブジェクトに対し、罫線の種類や色、太さなどを設定していく必要があります。
罫線の種類を指定する
罫線の種類はLineStyleプロパティで指定します。
- Borderオブジェクト .LineStyle = 定数や値
定数や値は下表のとおりです。
定数 | 値 | 内容 |
---|---|---|
xlContinuous | 1 | 実線 |
xlDashDot | 4 | 一点鎖線 |
xlDashDotDot | 5 | ニ点鎖線 |
xlSlantDashDot | 13 | 斜破線 |
xlDash | -4115 | 破線 |
xlDot | -4118 | 点線 |
xlDouble | -4119 | 2 本線 |
xlLineStyleNone | -4142 | 線なし |
Dim obj as Border
Set obj = Range("A1").Borders(xlEdgeBottom)
obj.LineStyle = xlContinuous
上の例では、セル「A1」の下側に実線を引いています。
罫線の色を指定する
罫線の色はColorプロパティ、あるいはColorIndexプロパティで指定します。
- Borderオブジェクト .Color= 定数や値
- Borderオブジェクト .ColorIndex= 定数や値
Colorプロパティは色を表すRGB値で指定します。
ColorIndexプロパティは色を表す1から56までの番号で指定します。
Dim obj as Border
Set obj = Range("A1").Borders(xlEdgeBottom)
With obj
.LineStyle = xlContinuous
.ColorIndex = 3
End With
上の例では、セル「A1」の下側に赤い実線を引いています。
罫線の太さを指定する
罫線の太さはWeightプロパティで指定します。
- Borderオブジェクト .Weight = 定数や値
定数や値は下表のとおりです。
定数 | 値 | 内容 |
---|---|---|
xlMedium | -4138 | 普通 |
xlHairline | 1 | 細線 (最も細い罫線) |
xlThin | 2 | 極細 |
xlThick | 4 | 太線 (最も太い罫線) |
Dim obj as Border
Set obj = Range("A1").Borders(xlEdgeBottom)
With obj
.LineStyle = xlContinuous
.ColorIndex = 3
.Weight = xlThick
End With
上の例では、セル「A1」の下側に赤くて、太い実線を引いています。
罫線を引くサンプルソース
今までの例では、オブジェクト変数を宣言し、その変数にBorderオブジェクトを入れていました。
オブジェクト変数を用意することなく、続けて書いても罫線を引くことができます。
例えば、「セル「A1」を囲む4本の罫線を引く」場合、以下のように書くこともできます。
Range("A1").Borders.LineStyle = xlContinuous
さらに、赤い太線にする場合は以下のようになります。
With Range("A1").Borders
.LineStyle = xlContinuous
.ColorIndex = 3
.Weight = xlThick
End With
罫線を引くサンプルソースを以下に記してみました。
参考にしていただけると幸いです。
With Range("B2").Borders 'B列
'実線
.LineStyle = xlContinuous
End With
With Range("B4").Borders(xlEdgeTop) 'B列上側線
'実線
.LineStyle = xlContinuous
End With
With Range("B6").Borders(xlEdgeLeft) 'B列左側線
'破線
.LineStyle = xlDash
End With
With Range("B8").Borders(xlEdgeBottom) 'B列下側線
'2本線
.LineStyle = xlDouble
End With
With Range("B10").Borders(xlEdgeRight) 'B列右側線
'点線
.LineStyle = xlDot
End With
With Range("D2").Borders 'D列
'実線
.LineStyle = 1
'太線
.Weight = xlThick
End With
With Range("D4").Borders(xlEdgeTop) 'D列上側線
'実線
.LineStyle = 1
'太線
.Weight = xlThick
End With
With Range("D6").Borders(xlEdgeLeft) 'D列左側線
'破線
.LineStyle = -4115
'普通線
.Weight = xlMedium
End With
With Range("D8").Borders(xlEdgeBottom) 'D列下側線
'2本線
.LineStyle = -4119
'太線
.Weight = xlThick
End With
With Range("D10").Borders(xlEdgeRight) 'D列右側線
'点線
.LineStyle = -4118
'太線
.Weight = 4
End With
With Range("F2").Borders 'F列
'実線
.LineStyle = xlContinuous
'太線
.Weight = xlThick
'ColorIndexで色を指定
.ColorIndex = 3
End With
With Range("F4").Borders(xlEdgeTop) 'F列上側線
'実線
.LineStyle = 1
'太線
.Weight = 4
'ColorIndexで色を指定
.ColorIndex = 4
End With
With Range("F6").Borders(xlEdgeLeft) 'F列左側線
'破線
.LineStyle = -4115
'普通線
.Weight = -4138
'RGB値で色を指定
.Color = RGB(0, 0, 255)
End With
With Range("F8").Borders(xlEdgeBottom) 'F列下側線
'2本線
.LineStyle = -4119
'太線
.Weight = xlThick
'RGB値で色を指定
.Color = RGB(255, 0, 255)
End With
With Range("F10").Borders(xlEdgeRight) 'F列右側線
'点線
.LineStyle = -4118
'太線
.Weight = 4
'ColorIndexで色を指定
.ColorIndex = 8
End With
以上、サンプルソースの実行結果を下に載せておきます。

また、表の罫線を引く場合、「CurrentRegion」を使うと便利です。
Range("B2").CurrentRegion.Borders.LineStyle = xlContinuous
この場合の実行結果を下に載せておきます。

まとめ
Excel VBAで罫線の引き方について解説してきました。
同じフォーマットの表を複数のシート、あるいは複数のファイルで作る場合、Excel VBAを使えば、一瞬で思い通りの表が描けます。
ぜひ、Excel VBAを活用して、処理の自動化、作業効率化を図ってください。
最後までお付き合いいただき、ありがとうございました。