今回はセルに罫線を引く方法をご説明します。
罫線を引く各パターンをサンプルに記載しましたので、説明を飛ばしたい方はサンプルへ飛んでください。
マクロの記録で罫線を引いてみると、膨大な量のコードが記録されますが、実際に罫線を引くのに必要なコードを把握すると、意外とシンプルにコーディング出来ます。
セルに罫線を引くには「Borders」コレクションを使用します。
罫線以外のセルの装飾については下記記事をご覧ください。
1.罫線の指定方法
「Border」と「Borders」の違い
「Border」は指定したセルの各辺のオブジェクトです。
「Borders」コレクションは「Borderオブジェクト」をまとめたコレクションです。
1辺を操作するには「Borders(辺の指定)」と記述し、セルを囲う4辺をまとめて操作するには「Borders」と辺の指定を省略します。
「Border」オブジェクトのプロパティ
プロパティ | 説明 |
Color | 罫線の色 |
ColorIndex | 罫線の色 |
LineStyle | 罫線の種類 |
Weight | 罫線の太さ |
罫線の種類(LineStyle)
定数 | 値 | 説明 |
xlContinuous | 1 | 実線 |
xlDash | -4115 | 破線 |
xlDashDot | 4 | 一点鎖線 |
xlDashDotDot | 5 | 二点鎖線 |
xlDot | -4118 | 点線 |
xlDouble | -4119 | 二重線 |
xlSlantDashDot | 13 | 斜め斜線 |
xlLineStyleNone | -4142 | 線なし |
罫線の太さ(Weight)
定数 | 値 | 説明 |
xlHairline | 1 | 極細 |
xlThin | 2 | 細 |
xlMedium | -4138 | 中 |
xlThick | 4 | 太 |
「Borders」コレクションのプロパティ
プロパティ | 説明 |
xlEdgeTop | 指定範囲セルの上側の罫線 |
xlEdgeBottom | 指定範囲セルの各下側の罫線 |
xlEdgeLeft | 指定範囲セルの各左端の罫線 |
xlEdgeRight | 指定範囲セルの右端の罫線 |
xlInsideHorizontal | 指定範囲セルの内側すべての縦線 |
xlInsideVertical | 指定範囲セルの内側すべての横線 |
xlDiagonalDown | 指定範囲セルの右上がりの斜線 |
xlDiagonalUp | 指定範囲セルの右下がりの斜線 |
2.サンプルコード
セルの上側に罫線
B2を指定しています。

Sub Sample1()
Cells(2, 2).Borders(xlEdgeTop).LineStyle = xlContinuous
End Sub
セルの下側に罫線
B2を指定しています。

Sub Sample2()
Cells(2, 2).Borders(xlEdgeBottom).LineStyle = xlContinuous
End Sub
セルの右側に罫線

Sub Sample3()
Cells(2, 2).Borders(xlEdgeRight).LineStyle = xlContinuous
End Sub
セルの左側に罫線

Sub Sample4()
Cells(2, 2).Borders(xlEdgeLeft).LineStyle = xlContinuous
End Sub
セルの4辺に罫線
Sample1~4を個別に記載せず、下記の方法で4辺一括で罫線を引けます。

Sub Sample5()
Cells(2, 2).Borders.LineStyle = xlContinuous
End Sub
範囲セルの横に罫線

Sub Sample6()
Range(Cells(2, 2), Cells(5, 5)).Borders(xlInsideHorizontal).LineStyle = xlContinuous
End Sub
範囲セルの縦に罫線

Sub Sample7()
Range(Cells(2, 2), Cells(5, 5)).Borders(xlInsideVertical).LineStyle = xlContinuous
End Sub
範囲セルの格子罫線
こちらが一番使用頻度が高いかと思います。

Sub Sample8()
Range(Cells(2, 2), Cells(5, 5)).Borders.LineStyle = xlContinuous
End Sub
罫線の太さを変更する
範囲セルの格子を引いて太さを太くします。

Sub Sample9()
With Range(Cells(2, 2), Cells(5, 5)).Borders
.LineStyle = xlContinuous
.Weight = xlThick
End With
End Sub
罫線の色を変更する

Sub Sample10()
With Range(Cells(2, 2), Cells(5, 5)).Borders
.LineStyle = xlContinuous
.Color = RGB(255, 0, 0) '赤色にします
End With
End Sub
罫線の種類を変更する

Sub Sample11()
With Range(Cells(2, 2), Cells(5, 5)).Borders
.LineStyle = xlContinuous
.LineStyle = xlDash '破線にします
End With
End Sub
罫線を消す
Sub Sample12()
Range(Cells(2, 2), Cells(5, 5)).Borders.LineStyle = xlLineStyleNone
End Sub
3.外枠を太くする
外枠を指定して変更する場合は、「BorderAround」を使用します。
構文は「BorderAround LineStyle, Weight, ColorIndex, Color, ThemeColor
」と記述します。
引数を指定する場合は「:=」と書きます。

Sub Sample13()
With Range(Cells(2, 2), Cells(5, 5))
.Borders.LineStyle = xlContinuous '格子罫線を引きます
.Borders.Color = RGB(255, 0, 0) '赤色にします
.BorderAround Weight:=xlThick '外枠を太くします(外枠は黒です)
End With
End Sub