Borderオブジェクト

セルの罫線に関する情報を管理しているオブジェクトはBorderオブジェクトです。ここでは Excel VBA で Border オブジェクトを取得する方法について解説します。

(2022 年 06 月 13 日公開 / 2022 年 06 月 13 日更新)

Borderオブジェクトを取得する

セルに対する罫線を表示する場合には、RangeオブジェクトのBordersプロパティを使ってBorderオブジェクトを取得します。

Dim border1 As Border

Set border1 = Range("A1").Borders(xlEdgeTop)
border1.LineStyle = xlContinuous

まとめて次のように記述しても構いません。

Range("A1").Borders(xlEdgeTop).LineStyle = xlContinuous

Borderオブジェクトは1つ1つの罫線を表しています。単独のセルを対象とした罫線を考えた場合、罫線は上下左右の4つあるだけですが、複数のセル領域を対象と考えた場合、罫線は領域の上下左右以外に領域内の横線と縦線があります。また右あがりの罫線と右下がりの罫線があります。

Borderオブジェクトを取得する(1)

よって対象となるセルまたはセル範囲に対して罫線の位置は最大で8種類あります。Borderオブジェクトを取り出す場合には、「Borders」プロパティの引数にどの位置の罫線を対象としたBorderオブジェクトを取り出すのかを指定します。

定数罫線の位置
xlEdgeTop上端
xlEdgeBottom下端
xlEdgeLeft左端
xlEdgeRight右端
xlInsideHorizontal内側横線
xlInsideVertical内側縦線
xlDiagonalDown右下がり斜線
xlDiagonalUp右上がり斜線

指定した位置の罫線を表すBorderオブジェクトを取り出したら、後は罫線の形状や太さ、色などを指定して線を引きます。これらは次のページから詳しく見ていきます。

サンプルプログラム

では簡単なサンプルで試してみましょう。単独のセルとセル領域に対してそれぞれ上下左右の罫線を表示した場合を確認します。

Sub テスト()
    
    With Range("B2")
        .Borders(xlEdgeTop).LineStyle = xlContinuous
        .Borders(xlEdgeBottom).LineStyle = xlContinuous
        .Borders(xlEdgeLeft).LineStyle = xlContinuous
        .Borders(xlEdgeRight).LineStyle = xlContinuous
    End With
    
    With Range("B4:D7")
        .Borders(xlEdgeTop).LineStyle = xlContinuous
        .Borders(xlEdgeBottom).LineStyle = xlContinuous
        .Borders(xlEdgeLeft).LineStyle = xlContinuous
        .Borders(xlEdgeRight).LineStyle = xlContinuous
    End With
    
End Sub

上記マクロを実行すると次のようになります。

Borderオブジェクトを取得する(2)

このようにBorderオブジェクトを取り出す領域全体を1つのものと考えて、それに対してどの位置に罫線を引くのかを指定することになります。

Bordersオブジェクトを取得する

Rangeオブジェクトの「Borders」プロパティで、プロパティに引数を指定すると指定した辺の位置にあるBorderオブジェクトを取得できますが、引数を指定せずに「Borders」プロパティの値を取得した時はBordersコレクションのオブジェクトを取得できます。

Bordersコレクションのオブジェクトは次のように取得します。

Dim border1 As Borders

Set border1 = Range("A1").Borders

Bordersコレクションには上下左右の4つの辺が全て含まれています。このため、全ての辺で同じ罫線を表示したい場合にはBorderオブジェクトで1つ1つ設定するのではなく、Bordersコレクションの各プロパティに設定すれば4つの辺にまとめて設定する事が出来ます。

Dim border1 As Borders

Set border1 = Range("A1").Borders
border1.LineStyle = xlContinuous
border1.Weight = xlMedium
border1.ColorIndex = 10

単独のセルではなく、セル範囲からBordersコレクションを取得した場合には、領域内の全てのセルの上下左右の罫線が描画されます。

Range("A1:B4").Borders.LineStyle = xlContinuous

同じ罫線をまとめて描画したい場合には便利です。

サンプルプログラム

では簡単なサンプルで試してみましょう。

Sub テスト()
    Dim border1 As Borders

    Set border1 = Range("B2").Borders
    border1.LineStyle = xlContinuous
    border1.Weight = xlMedium
    border1.ColorIndex = 3

    Range("B4:D7").Borders.LineStyle = xlContinuous

End Sub

上記マクロを実行すると次のようになります。

Bordersオブジェクトを取得する(1)

-- --

Excel VBA で Border オブジェクトを取得する方法について解説しました。

( Written by Tatsuo Ikura )

広告
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。