Borderオブジェクト
セルの罫線に関する情報を管理しているオブジェクトはBorderオブジェクトです。ここでは Excel VBA で Border オブジェクトを取得する方法について解説します。
(Last modified: )
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つあるだけですが、複数のセル領域を対象と考えた場合、罫線は領域の上下左右以外に領域内の横線と縦線があります。また右あがりの罫線と右下がりの罫線があります。
よって対象となるセルまたはセル範囲に対して罫線の位置は最大で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オブジェクトを取り出す領域全体を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
上記マクロを実行すると次のようになります。
-- --
Excel VBA で Border オブジェクトを取得する方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。