HOME > 即効テクニック > Excel VBA > セル操作関連のテクニック > 簡単に格子罫線/外枠罫線を引く(Bordersプロパティ/BorderAroundメソッド) 

簡単に格子罫線/外枠罫線を引く(Bordersプロパティ/BorderAroundメソッド) |Excel VBA

セル操作関連のテクニック

簡単に格子罫線/外枠罫線を引く(Bordersプロパティ/BorderAroundメソッド) 

(Excel 97/2000/2002/2003/2007/2010)

任意のセル範囲に「格子」罫線を引く操作をマクロ記録すると、次のようなコードが記録されます。

(記録されるコードはExcelのバージョンによって異なることがあります。TintAndShadeプロパティはExcel 2007以降に追加されたプロパティです。下記のコードはExcel 2010で記録したものです。)

●記録マクロ●

Sub Macro1()
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
End Sub

膨大なコードです。まさかこのコードをそのまま使うユーザーはいませんよね。
記録されたコードをよく読み、ヘルプで内容を調べれば、省略できる引数がたくさんあるとわかります。ましてや冒頭の

Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone

は、 セル内の右下がり斜め罫線を「引かない」セル内の右上がり斜め罫線を「引かない」 という意味です。引かないのなら、コードを書く必要もありません。

■格子罫線を引く

罫線はBorderオブジェクトで操作します。そのBorderオブジェクトの集合体がBordersコレクションで、RangeオブジェクトのBordersプロパティで参照します。

記録されたコードをよく見ると、Borders(xlEdgeRight)などと罫線の位置をひとつずつ指定しているのがわかります。定数xlEdgeRightは、セルの右辺罫線を指します。

このように、罫線はマクロで操作するのが面倒くさいオブジェクトのひとつですが、格子の罫線を操作するだけなら、上のように大量のコードを記述する必要はありません。

Bordersコレクションは、引数を指定しないと「セルの四辺」を返すという特性があります。また、線の様子を指定するLineStyleプロパティ、Weightプロパティ、ColorIndexプロパティ、TintAndShadeプロパティのうち、必ず指定しなければいけないのはLineStyleプロパティだけです。ほかのプロパティは省略すると既定値が適用されます。

したがって、選択したセル範囲に標準の線種と色で格子の罫線を引くには次のサンプル1のようにわずか1行で済みます。

●サンプル1●

Sub Sample1()
    Selection.Borders.LineStyle = xlContinuous
End Sub

すべての罫線を消すのなら、定数xlContinuousの代わりに定数xlNoneを指定してください。もし、これらの定数すら忘れてしまったら、TrueとFalseでもけっこうです。LineStyle = Trueで罫線を引けますし、LineStyle = Falseとすれば、定数xlNoneを設定したのと同じように罫線を消去できます。

■外枠罫線を引く

「格子」の次によく引くのは「外枠」の罫線ですが、こちらもマクロ記録のような膨大なコードを書く必要はありません。RangeオブジェクトにはBorderAroundメソッドという便利なメソッドが用意されています。BorderAroundメソッドの書式は次の通りです。

構文	Range.BorderAround LineStyle, Weight, ColorIndex, Color, ThemeColor

引数はすべて省略可能ですが、すべて省略すると何も起こりません。また、引数ThemeColorは、Excel 2010で追加された引数なので、Excel 2007までのバージョンで指定するとエラーになります。

たとえば、選択したセル範囲に「外枠太罫線」を引くにはサンプル2のようにします。

●サンプル2●

Sub Sample2()
    Selection.BorderAround Weight:=xlMedium
End Sub

セル範囲全体に「格子」罫線を引き、外枠に太罫線を引くなら、サンプル3のようにします。

●サンプル3●

Sub Sample3()
    Selection.Borders.LineStyle = True
    Selection.BorderAround Weight:=xlMedium
End Sub

たったこれだけのことに、マクロ記録された数十行ものコードを使わないようにくれぐれもご注意ください。