更新日:、 作成日:

VBA セルの罫線を引く (Range.Borders)

はじめに

Excel VBA マクロでセルに罫線を引く方法を紹介します。

Range("B1").Borders または Cells(1, 2).Borders プロパティから、セル「B1」に罫線を引けます。

Border.LineStyle プロパティから、罫線の種類を設定できます。

Border.Color プロパティから、罫線の色を設定できます。

罫線を取得するには「セルの罫線を取得する」をご覧ください。
セルを範囲指定するすべての方法は「セルを範囲指定して取得する」をご覧ください。

セルに罫線を引く

Range の引数にセル名を指定すると、そのセルに罫線を引けます。

セル「B2」の上下左右に罫線を引くには Range("A1").Borders を入力します。上側に罫線を引くには Range("A1").Borders(xlEdgeTop) を入力します。

Dim bs As Borders
Set bs = Range("B2").Borders ' 上下左右の罫線
bs.LineStyle = xlContinuous  ' 実線

Dim b As Border
Set b = Range("D2").Borders(xlEdgeTop)      ' 上側の罫線
' Set b = Range("D2").Borders(xlEdgeBottom) ' 下側の罫線
' Set b = Range("D2").Borders(xlEdgeLeft)   ' 左側の罫線
' Set b = Range("D2").Borders(xlEdgeRight)  ' 右側の罫線
b.LineStyle = xlContinuous ' 実線
1

Cells の引数にセルの行と列の番号を指定すると、そのセルに罫線を引けます。

行「2」、列「A」に罫線を設定するには Cells(2, 1).Borders を入力します。

Dim bs As Borders
Set bs = Cells(1, 1).Borders ' A1
Set bs = Cells(2, 1).Borders ' A2
Set bs = Cells(1, 2).Borders ' B1
Set bs = Cells(2, 2).Borders ' B2
bs.LineStyle = xlContinuous
その他の辺に罫線を引くには「セルの罫線について」をご覧ください。

隣接するセルの罫線は同じものです。セル「A1」の下側に罫線を引くと、セル「A2」の上側に罫線が引かれたことになります。

罫線の種類を設定する

Borders または Border の LineStyle で罫線の種類を設定できます。

Dim bs As Borders
Set bs = Range("B2").Borders ' 上下左右の罫線
bs.LineStyle = xlContinuous

Dim b As Border
Set b = Range("B2").Borders(xlEdgeTop) ' 上側の罫線
b.LineStyle = xlContinuous

罫線の種類には次のものがあります。

定数名 説明
xlContinuous1実線1
xlDash-4115破線2
xlDashDot4一点鎖線3
xlDashDotDot5二点鎖線4
xlDot-4118点線5
xlDouble-4119二重線6
xlSlantDashDot13斜め斜線7
xlLineStyleNone-4142なし

罫線の色を設定する

Borders または Border の Color で罫線の色を設定できます。

色は「RGB 関数」で取得した値を設定します。

Range("B2").Borders.Color = RGB(255, 0, 0) ' 上下左右の罫線の色、罫線も引かれる

Range("D2").Borders(xlEdgeTop).Color = RGB(255, 0, 0) ' 上側の罫線の色、罫線も引かれる

色を設定するとき、罫線が引かれていないときは実線が引かれます。

ColorIndex プロパティからも色を設定できます。それぞれの色に対応した数値を設定します。

Range("B2").Borders.ColorIndex = 3 ' 赤
colorindex

罫線の太さを設定する

Borders または Border の Weight で罫線の太さを設定できます。

Dim bs As Borders
Set bs = Range("B2").Borders ' 上下左右の罫線
bs.Weight = xlThin 

Dim b As Border
Set b = Range("B2").Borders(xlEdgeTop) ' 上側の罫線
b.Weight = xlThin

罫線の太さには次のものがあります。

定数名 説明
xlHairline1極細8
xlThin29
xlMedium-413810
xlThick411

セルの範囲に罫線を引く

セルの範囲「B2」~「C3」に罫線を引くには Range("B2:C3").Borders または Range("B2", "C3").Borders を入力します。

Dim bs As Borders
Set bs = Range("B2:C3").Borders    ' B2 ~ C3 のすべての上下左右の罫線
Set bs = Range("B2", "C3").Borders ' B2 ~ C3 のすべての上下左右の罫線
bs.LineStyle = xlContinuous

Dim b As Border
Set b = Range("E2:F3").Borders(xlEdgeTop) ' E2 と F2 の上側の罫線
b.LineStyle = xlContinuous
2

Borders に対して罫線を引くと、範囲内の各セルの上下左右のすべてに罫線が引かれます。

xlEdgeTop など辺を指定すると、範囲全体のその辺に対して罫線が引かれます。

別シートのセルに罫線を引く

シートを指定するには Worksheets の引数にシート名またはインデックスを指定します。

Sheet1 を指定するには Worksheets("Sheet1") または Worksheets(1) を入力します。

sheet1
Dim bs As Borders
' Sheet1 のセル「A1」の罫線を設定
Set bs = Worksheets("Sheet1").Range("A1").Borders
Set bs = Worksheets(1).Range("A1").Borders
bs.LineStyle = xlContinuous

' Sheet2 のセル「A1」の罫線を設定
Set bs = Worksheets("Sheet2").Range("A1").Borders
Set bs = Worksheets(2).Range("A1").Borders
bs.LineStyle = xlContinuous

Sheet1 に Range や Cells を入力すると、自身のシートのセルになります。自身を表す Me. が省略されています。

' どちらも同じコード
Range("A1").Value = "Sheet1"
Me.Range("A1").Value = "Sheet1"

標準モジュールに Range や Cells を入力すると、開いているシートのセルになります。アクティブシートを表す ActiveSheet. が省略されています。

' どちらも同じコード
Range("A1").Value = "アクティブ"
ActiveSheet.Range("A1").Value = "アクティブ"