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 = "アクティブ"