VBAではExcelに罫線を引くことができますが、「どうやって罫線を引けばいいの?」「色や太さの種類は指定できるの?」といった疑問がでてくると思います。
VBAにて行追加やデータ追加ができるようになったら、罫線を引く方法と削除する方法までマスターして、全自動で表を作れるようになったら便利ですよね!
そこで、この記事ではVBAで罫線を引く方法について、以下の内容で解説していきます!
【基礎】罫線とは何か
【基礎】罫線を設定する方法
【基礎】罫線をクリア(削除)する方法
【発展】罫線の種類を設定する方法
【発展】罫線の色を設定する方法
【発展】罫線の太さ設定する方法
【発展】追加した行まで罫線を引いてみる
VBAで罫線を引く方法をわかりやすく解説していますので、ぜひ参考にしてください!
罫線とは何か
罫線とは、セルを囲むように引く線で、表として分かりやすくするときに使います。
罫線を引く前、引いた後のサンプルを用意しました。
[罫線設定前]

[罫線設定後]

罫線を引いただけで、表が見やすくなりますよね。
それでは次に、罫線を設定する具体的な書き方について解説していきます!
罫線を設定する方法
セルに罫線を設定する方法
Rangeでセルの範囲を指定して、その中の罫線を引く箇所を指定する方法を解説します。
RangeでC3:E5を範囲選択し、Bordersプロパティを使う場合を例にして解説します。
[書式]
Range(範囲).Borders(引きたい箇所).Linestyle = 罫線の種類
引きたい箇所を指定する定数について表にまとめました。
| 定数 | 説明 |
|---|---|
| xlDiagonalDown | 範囲内の各セルの左上隅から右下への罫線 |
| xlDiagonalUp | 範囲内の各セルの左下隅から右上への罫線 |
| xlEdgeBottom | 範囲内の下側の罫線 |
| xlEdgeLeft | 範囲内の左端の罫線 |
| xlEdgeRight | 範囲内の右端の罫線 |
| xlEdgeTop | 範囲内の上側の罫線 |
| xlInsideHorizontal | 範囲外の罫線を除く、範囲内のすべてのセルの水平罫線 |
| xlInsideVertical | 範囲外の罫線を除く、範囲内のすべてのセルの垂直罫線 |
C3:E5を1つのまとまった範囲として、上部(図でいう①の部分)に罫線を引きたい場合、[使用例]のコードLineSample1にある①のように記述します。
同じく、左(図でいう②の部分)に罫線を引きたい場合、LineSample1ある②のように・・・以下同様、図中の番号とコードの番号を比較して見てください。

罫線の種類はxlContinuousを使い、実線を指定しています。
[使用例]
Sub LineSample1()
'①上部
Range("C3:E5").Borders(xlEdgeTop).LineStyle = xlContinuous
'②左
Range("C3:E5").Borders(xlEdgeLeft).LineStyle = xlContinuous
'③下部
Range("C3:E5").Borders(xlEdgeBottom).LineStyle = xlContinuous
'④右
Range("C3:E5").Borders(xlEdgeRight).LineStyle = xlContinuous
'⑤範囲内の縦線
Range("C3:E5").Borders(xlInsideVertical).LineStyle = xlContinuous
'⑥範囲内の横線
Range("C3:E5").Borders(xlInsideHorizontal).LineStyle = xlContinuous
End Sub
[実行結果]

すべてを指定したので範囲に格子状の罫線が引けました。
このようにして罫線を引きたい箇所を指定することができます。
セル範囲の外枠に罫線を引く方法
セル範囲の外枠に罫線を引く場合は、上下左右をすべて指定するのではなく、BorderAroundメソッドを使います。
[書式]
Range(範囲).BorderAround LineStyle:=xlContinuous
[使用例]
Sub LineSample2()
Range("C3:E5").BorderAround LineStyle:=xlContinuous
End Sub
[実行結果]

指定した範囲の外枠に罫線を引くことができました。
セル範囲に格子状に罫線を引く方法
セル範囲に格子状に罫線を引くには、すべて指定する必要はなくBordersプロパティの引数を省略すれば可能です。
[使用例]
Sub LineSample3()
Range("C3:E5").Borders.LineStyle = xlContinuous
End Sub
[実行結果]

コード1行だけで指定した範囲に格子状の罫線が引けました。
罫線をクリア(削除)する方法
セルの罫線をクリアする方法
罫線の箇所を指定して消すには、xlLineStyleNoneを使います。
[書式]
Range(範囲).Borders(消したい箇所).LineStyle = xlLineStyleNone
左側の罫線だけを消すには、次のようにBordersプロパティの引数にxlEdgeLeftを指定します。
[使用例]
Sub LineSample4()
Range("C3:E5").Borders(xlEdgeLeft).LineStyle = xlLineStyleNone
End Sub
[実行結果]

指定した範囲の左側だけ罫線を消すことができました。
セル範囲の罫線をクリアする方法
セル範囲のすべての罫線を一気にクリアすることもできます。
[使用例]
すべての罫線を引いた時と同じように、Bordersプロパティの引数を省略します。
Sub LineSample5()
Range("C3:E5").Borders.LineStyle = xlLineStyleNone
End Sub
[実行結果]

範囲の罫線すべてが消えました。
罫線の種類を設定する方法
ここまでの解説ではxlContinuousを指定し、実線を引きました。
xlContinuous以外を指定し、罫線の種類を変えることができます。
[書式]
Range(範囲).Boders(引きたい箇所).Linestyle = 罫線の種類
罫線の種類の指定を表にまとめます。
| 定数 | 値 | 罫線の種類 |
|---|---|---|
| xlContinuous | 1 | 実線(細) |
| xlDash | -4115 | 破線 |
| xlDashDot | 4 | 一点鎖線 |
| xlDashDotDot | 5 | 二点鎖線 |
| xlDot | -4118 | 点線 |
| xlDouble | -4119 | 二重線 |
| xlSlantDashDot | 13 | 斜め斜線 |
| xlLineStyleNone | -4142 | 無し |
xlDashを指定し、破線を引きます。
分かりやすいように、先に格子状の罫線を引いた状態から解説します。
[使用例]
Sub LineSample6()
'分かりやすいように、先に格子状の罫線を引く。
Range("C3:E5").Borders.LineStyle = xlContinuous
Range("C3:E5").Borders(xlEdgeLeft).LineStyle = xlDash
End Sub
[実行結果]

範囲の左に破線が引けました。
※以降の解説では、このLineSample6を実行したときのシートのままで解説するコードを実行してください。
罫線の色を設定する方法
色を変えるには、BordersプロパティのColorプロパティを使います。
[書式]
Range(範囲).Borders(引きたい箇所).Color = 色
色を設定する定数について、表にまとめました。
| 定数 | 値 | 色 |
|---|---|---|
| vbBlack | 0x000000 | 黒 |
| vbRed | 0x0000FF | 赤 |
| vbGreen | 0x00FF00 | 緑 |
| vbYellow | 0x00FFFF | 黄 |
| vbBlue | 0xFF0000 | 青 |
| vbMagenta | 0xFF00FF | マゼンタ |
| vbCyan | 0xFFFF00 | シアン |
| vbWhite | 0xFFFFFF | 白 |
[使用例]
Sub LineSample7()
Range("C3:E5").Borders(xlEdgeTop).Color = vbRed
End Sub
[実行結果]

範囲上部が赤に変わりました。
罫線の太さ設定する方法
Weightを使い、罫線の太さを変えることができます。
[書式]
Range(範囲).Borders(引きたい箇所).Weight = 線の太さ
指定する罫線の太さの定数を表にまとめました。
| 定数 | 値 | 罫線の太さ |
|---|---|---|
| xlHairline | 1 | 極細 |
| xlThin | 2 | 細 |
| xlMedium | -4138 | 中 |
| xlThick | 4 | 太 |
線の太さは指定しなければ標準のxlThinが選択されるのですが、xlThickを使い太線にします。
[使用例]
Sub LineSample8()
Range("C3:E5").Borders(xlEdgeBottom).Weight = xlThick
End Sub
[実行結果]

範囲下部に太線が引けました。
追加した行まで罫線を引いてみる
今まで解説してきた内容をフルに使い、完全に自動で罫線を入れます。
以下のような表があったとします。

社員を2名追記しました。

表ヘッダの位置と横幅(つまり6月まで)固定するものとして、追加した社員の行もVBAで罫線を一気に引きましょう。
Sub LineSample9()
Dim MaxRow As Long '最終セルの行番号
MaxRow = Range("B2").SpecialCells(xlLastCell).Row
With Range("B4:I" & MaxRow)
'格子状の線を引く
.Borders(xlInsideVertical).LineStyle = xlContinuous
.Borders(xlInsideHorizontal).LineStyle = xlContinuous
'一番外側の枠線を引く
.Borders(xlEdgeTop).Weight = xlThick
.Borders(xlEdgeLeft).Weight = xlThick
.Borders(xlEdgeBottom).Weight = xlThick
.Borders(xlEdgeRight).Weight = xlThick
End With
End Sub
[実行結果]

いかがでしょうか。
表が大きくなればなるほど、全自動で罫線が引けるのはとても便利ですよね。
コード中で使った最終セルの行番号を取得する方法は、以下の記事をご覧ください。
まとめ
本記事では、VBAで罫線の引き方を解説しました。
罫線の種類や色を変える方法も合わせて使い、より実践的な表を作ってみてください。
もしVBAで罫線を引いたり消したりする方法を忘れてしまったら、この記事を思い出してくださいね!






