Bordersプロパティ
罫線の位置は上、下、左、右、縦、横、右上がり斜線、右下がり斜線、の8つがあります。それぞれがBorderオブジェクトで表します。
このBorderオブジェクトの取得や設定はBordersプロパティで行います。
各罫線はBorderオブジェクトで定義されますので、罫線の色や太さや線の種類を指定する場合はBordersプロパティで上下左右などのどの位置なのかを指定しなければなりません。
位置を決める→色・種類・太さを指定する、という順になります。ここでは位置を決めるBorderオブジェクトについて説明します。
構文
1 2 3 4 5 |
'// 定数未指定時 Bordersオブジェクト = Rangeオブジェクト.Bordersプロパティ '// 定数指定時 Borderオブジェクト = Rangeオブジェクト.Borders(Index)プロパティ |
戻り値
定数未指定時と指定時ではBordersプロパティの戻り値が異なります。
定数未設定時:Bordersオブジェクト
定数設定時:Borderオブジェクト
引数を省略することはあまりないと思いますが、その場合の戻り値はBordersオブジェクトになります。
戻り値のBorderオブジェクトには以下のプロパティがあります。
プロパティ名 | 説明 |
---|---|
Color | 罫線の色をRGB値で表す |
ColorIndex | 罫線の色の番号を1から56で表す |
LineStyle | 罫線の種類をXlLineStyle列挙型の定数で表す |
Weight | 罫線の太さをXlBorderWeight列挙型の定数で表す |
親オブジェクト
親オブジェクトにはセル範囲を示すRangeオブジェクトを指定します。
Bordersプロパティの引数Index
Indexには罫線の位置を示すXlBordersIndex列挙型の定数を指定します。(Index)を省略した場合は上下左右、水平、垂直の6つの罫線を指定したとみなします。
XlBordersIndex列挙型
定数 | 値 | 説明 |
---|---|---|
指定なし(引数省略時) | なし | 上下左右、水平、垂直の6つの線 |
xlDiagonalDown | 5 | 右下がり斜線 |
xlDiagonalUp | 6 | 右上がり斜線 |
xlEdgeBottom | 9 | 下線 |
xlEdgeLeft | 7 | 左線 |
xlEdgeRight | 10 | 右線 |
xlEdgeTop | 8 | 上線 |
xlInsideHorizontal | 12 | 垂直線 |
xlInsideVertical | 11 | 水平線 |
斜線の注意点
右下がり斜線のxlDiagonalDown、または、右上がり斜線のxlDiagonalUpでの罫線を設定する場合に、単一セルではなくセル範囲に対して罫線を引いても、各セルの斜線が設定されます。セル範囲全体に対して斜線を引くことはできません。
ただし、結合セルの場合は、その結合セルを1つのセルとみなして斜線が引かれます。
Bordersオブジェクト取得時の注意点
セル範囲の上下左右、水平、垂直の罫線の種類や太さが異なる部分がある場合にBordersオブジェクトを取得すると、Nullが返却されます。
1つの値に限定できない場合はNullになりますので、取得値の判定が必要な場合はIsNull関数でNullかどうかの判定を行う必要があります。
1 2 3 4 5 6 7 8 |
Sub BordersNullTest() Dim wt wt = ActiveCell.Borders.Weight If IsNull(wt) = True Then Call MsgBox("Nullです") End If End Sub |
サンプルコード
実線を引くサンプルです。5行目はBordersの定数を省略しています。10行目以降は8種類の位置をそれぞれ使っています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
Sub BordersTest() Dim bs As Borders '// 引数未指定時の戻り値 Dim b As Border '// 引数指定時の戻り値 '// Bordersオブジェクトを取得 Set bs = Range("B2:D4").Borders '// A1からC3を格子状に設定 bs.LineStyle = xlContinuous '// Borderオブジェクトを取得 Set b = Range("C6").Borders(xlEdgeTop) '// B6からD8の範囲を囲うように設定 '// 上 b.LineStyle = xlContinuous '// 左 Range("B7").Borders(xlEdgeLeft).LineStyle = xlContinuous '// 右 Range("D7").Borders(xlEdgeRight).LineStyle = xlContinuous '// 下 Range("C8").Borders(xlEdgeBottom).LineStyle = xlContinuous '// 右上がり斜線 Range("B6,D8").Borders(xlDiagonalUp).LineStyle = xlContinuous '// 右下がり斜線 Range("D6,B8").Borders(xlDiagonalDown).LineStyle = xlContinuous '// 水平線 Range("B6:D8").Borders(xlInsideHorizontal).LineStyle = xlContinuous '// 垂直線 Range("B6:D8").Borders(xlInsideVertical).LineStyle = xlContinuous End Sub |