サイトについて      連絡先   検索

VBA セルの罫線を取得する

はじめに

Excel VBA マクロのセルの罫線を取得する方法を紹介します。

Range.Borders プロパティまたは Cells.Borders プロパティから罫線を取得できます。

Borders.LineStyle プロパティから罫線の種類を取得できます。

Borders.Weight プロパティから罫線の太さを取得できます。

  • 目次
    • 罫線について
    • セルの罫線を取得する
    • 罫線の種類を取得する
    • 罫線の太さを取得する
    • セルの範囲の罫線を取得する
    • 指定したシートのセルの罫線を取得する

罫線について

罫線を操作する基本について、先に「セルの罫線について」をご覧ください。

Border や Borders、xlEdgeTop とは何かについて紹介しています。

セルの罫線を取得する

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

セル「A1」の罫線を取得するにはRange("A1").Bordersを入力します。


Dim bs As Borders
Set bs = Range("A1").Borders ' すべての罫線

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

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

罫線の種類を取得する

Borders または Border の LineStyle から罫線の種類を取得できます。


Dim bs As Borders
Set bs = Range("B2").Borders ' すべての罫線
Debug.Print(bs.LineStyle)

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

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

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

xlEdgeTop などの辺を指定しないで Borders.LineStyle から取得するときは、上下左右のすべての種類が同じときだけ値を取得します。違う種類が含まれているときは Null になります。

罫線の太さを取得する

Borders または Border の Weight から罫線の太さを取得できます。


Dim bs As Borders
Set bs = Range("B2").Borders ' すべての罫線
Debug.Print(bs.Weight)

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

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

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

xlEdgeTop などの辺を指定しないで Borders.LineStyle から取得するときは、上下左右のすべての太さが同じときだけ値を取得します。違う太さが含まれているときは Null になります。

セルの範囲の罫線を取得する

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


Dim bs As Borders
Set bs = Range("A1:B2").Borders
Set bs = Range("A1", "B2").Borders
Debug.Print(bs.LineStyle)
Debug.Print(bs.Weight))

Dim b As Border
Set b = Range("A1:B2").Borders(xlEdgeTop)
Debug.Print(b.LineStyle)

Borders から各プロパティの値を取得するときは、範囲の各セルの上下左右のすべての値が同じときだけ取得します。違う値が含まれているときは 0 または Null になります。

xlEdgeTop など辺を指定すると、範囲全体のその辺の値がすべて同じときだけ取得します。違う値が含まれているときは 0 または Null になります。

指定したシートのセルの罫線を取得する

シートを指定するには 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
Debug.Print(bs.LineStyle)

' Sheet2 のセル「A1」の罫線を取得
Set bs = Worksheets("Sheet2").Range("A1").Borders
Set bs = Worksheets(2).Range("A1").Borders
Debug.Print(bs.LineStyle)

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


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

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


' どちらも同じコード
Range("A1").Value = "アクティブ"
ActiveSheet.Range("A1").Value = "アクティブ"
  • 目次
    • 罫線について
    • セルの罫線を取得する
    • 罫線の種類を取得する
    • 罫線の太さを取得する
    • セルの範囲の罫線を取得する
    • 指定したシートのセルの罫線を取得する