【ExcelVBA・マクロ】罫線(Borders)の設定方法完全ガイド|LineStyle・Weight・ColorとxlEdge指定の使い分け【コピペOK】

ExcelVBA

Excelで表を作るとき、罫線の設定に手間取ったことはないでしょうか。上下左右だけ引きたい、格子状に引きたい、二重線で強調したいなど、罫線には細かいパターンがあります。手作業で毎回設定するのは面倒ですが、VBAの Borders を使えば、これらをまとめて自動化できます。

この記事では、Borders オブジェクトの基本的な使い方から、LineStyleWeightColor の指定方法、xlEdgeTop などの位置指定の使い分け、よくあるつまずきポイントまでを、コピペで使えるサンプルコード付きで解説します。

スポンサーリンク
スポンサーリンク

Bordersオブジェクトの基本

セル範囲の罫線は、Range.Borders プロパティ経由で操作します。罫線の種類は主に3つのプロパティで決まります。

  • LineStyle:線の種類(実線・破線・二重線など)
  • Weight:線の太さ
  • Color:線の色

もっとも単純な例として、指定範囲の外枠だけに実線を引くコードは次のとおりです。

Sub SetBorderAround()
    Range("B2:D5").BorderAround LineStyle:=xlContinuous, Weight:=xlMedium, Color:=RGB(0, 0, 0)
End Sub

BorderAround メソッドを使うと、外枠だけをまとめて指定できるため、格子線までは不要な場面で便利です。

xlEdge系定数で位置を指定する

上下左右・内側の線を個別に指定したい場合は、Borders に位置を表す定数を渡します。よく使う定数は次のとおりです。

定数 意味
xlEdgeTop 上端の罫線
xlEdgeBottom 下端の罫線
xlEdgeLeft 左端の罫線
xlEdgeRight 右端の罫線
xlInsideHorizontal 内側の横線
xlInsideVertical 内側の縦線

格子状に罫線を引く場合は、これらをすべて指定します。

Sub SetGridBorders()
    With Range("B2:D5")
        .Borders(xlEdgeTop).LineStyle = xlContinuous
        .Borders(xlEdgeBottom).LineStyle = xlContinuous
        .Borders(xlEdgeLeft).LineStyle = xlContinuous
        .Borders(xlEdgeRight).LineStyle = xlContinuous
        .Borders(xlInsideHorizontal).LineStyle = xlContinuous
        .Borders(xlInsideVertical).LineStyle = xlContinuous
    End With
End Sub

一つひとつ指定するのは冗長に見えますが、位置ごとに太さや色を変えたい場合(例えば外枠だけ太くする、内側だけ点線にするなど)に対応できるのがこの書き方のメリットです。

太さと色を変える

Weight には xlHairline(極細)・xlThin(細)・xlMedium(中)・xlThick(太)の4段階があります。Color にはRGB関数を使って自由に色を指定できます。

強調したい行の下線を、太い二重線・赤色にする例です。

Sub SetDoubleBorderBottom()
    With Range("B2:D2").Borders(xlEdgeBottom)
        .LineStyle = xlDouble
        .Weight = xlThick
        .Color = RGB(200, 0, 0)
    End With
End Sub

LineStyle = xlDouble を指定すると二重線になり、合計欄や見出し行の区切りを目立たせたいときに役立ちます。

罫線をまとめて設定・解除する

範囲全体の罫線をまとめて同じ設定にしたい場合は、位置を指定せずに Borders プロパティ全体に対して値を代入できます。

Sub SetBordersAllAtOnce()
    With Range("B2:D5")
        .Borders.LineStyle = xlContinuous
        .Borders.Weight = xlThin
    End With
End Sub

逆に罫線をすべて解除したい場合は、LineStylexlNone を代入します。

Sub RemoveAllBorders()
    Range("B2:D5").Borders.LineStyle = xlNone
End Sub

表のレイアウトを作り直す前に一度罫線をリセットしたい場合などに便利なコードです。

よくあるつまずきポイント

  • 色だけ変えても反映されないLineStylexlNone(罫線なし)のままだと、ColorWeight だけ設定しても線は表示されません。必ず LineStyle を実線などに設定してから太さ・色を指定しましょう。
  • 斜め線が消えないxlEdgeTop などの4辺・内側指定では、斜め罫線(xlDiagonalDownxlDiagonalUp)は変更されません。斜め線を消したい場合は個別に指定する必要があります。
  • セル結合との相性:結合セルに罫線を設定すると、見た目上は1つのセルでも内部的には複数セル分の罫線情報を持っているため、意図した位置に線が引かれないことがあります。結合前に罫線を設定する、または結合範囲全体に対して一括で指定するのがおすすめです。

まとめ

Borders オブジェクトを使えば、罫線の種類・太さ・色・位置を細かくコントロールしながら、表の見た目を自動で整えることができます。xlEdgeTop などの位置指定と LineStyleWeightColor の組み合わせを覚えておけば、報告書や集計表のフォーマット作成を大幅に効率化できます。ぜひ日々のマクロに取り入れてみてください。

スポンサーリンク
スポンサーリンク
ExcelVBA
シェアする
いがぴをフォローする

コメント

タイトルとURLをコピーしました