【作成中】【Excel VBA】セルに罫線を引く

VBAで罫線を表すオブジェクトは、Borderオブジェクトです。セルに罫線を引く(または削除する)には、Borderオブジェクトまたは、Borderオブジェクトを要素に持つBordersコレクションの各種プロパティに適切な値を設定します。

VBAで罫線を引く操作は、おおよそ[セルの書式設定]ダイアログ[罫線]タブから罫線を引く操作に対応しています。

目次

セル範囲の罫線を取得する

セル(範囲)のBorderオブジェクトまたはBordersコレクションを取得するには、RangeオブジェクトのBordersプロパティを使います。

RangeオブジェクトのBordersプロパティを使うと、指定されたオブジェクト(セル範囲)の罫線を表すBorderオブジェクトまたはBorderオブジェクトを要素とするBordersオブジェクトを取得することが出来ます。これらのオブジェクトのプロパティを設定することで、罫線を引いたり、罫線のスタイルを変更することが出来ます。

セル範囲の特定の罫線を取得する

RangeオブジェクトのBordersプロパティに括弧で囲んで「罫線の位置」を指定すると、その位置の罫線を表すBorderオブジェクトを取得できます。

Rangeオブジェクト.Borders(罫線の位置)

罫線の位置はXlBordersIndex列挙型の定数で指定します。定数には次のものがあります。

名前説明
xlEdgeLeft7範囲の左端の垂直線
xlEdgeTop8範囲の上端の水平線
xlEdgeBottom9範囲の下端の水平線
xlEdgeRight10範囲の右端の垂直線
xlInsideHorizontal12範囲の内側のすべてのセルの水平線
xlInsideVertical11範囲の内側のすべてのセルの垂直線
xlDiagonalDown5範囲の各セルの左上から右下に引かれる罫線
xlDiagonalUp6範囲の各セルの左下から右上に引かれる罫線
XlBordersIndex列挙型の定数

これらの定数は[セルの書式設定ダイアログ]の[罫線タブ]と以下の図のように対応しています。

セルの書式設定ダイアログのBorderオブジェクトとの対応
XlBordersIndex列挙型の定数とセルの書式設定ダイアログの対応

次の例は、セル範囲(B2:E5)のxlEdgeLeft、xlEdgeTop、xlEdgeBottom、xlEdgeRightのBorderオブジェクトを順に取得し、それらのBorderオブジェクトのLineStyleプロパティとWeightプロパティを設定します。このコードを実行するとセル範囲(B2:E5)の周りに太い罫線が引かれます。

Sub sample()
    Dim i As Long
    For i = xlEdgeLeft To xlEdgeRight
        Range("B2:E5").Borders(i).LineStyle = xlContinuous
        Range("B2:E5").Borders(i).Weight = xlThick
    Next
End Sub

セル範囲のBordersコレクション

RangeオブジェクトのBordersプロパティを引数を指定せずに単に参照すると、指定したセル範囲のBorderオブジェクトを要素とするBordersコレクションを取得できます。

Rangeオブジェクト.Borders

次の例はBordersコレクションをForステートメントでループし、Borderオブジェクトのプロパティを繰り返し設定しています。このコードを実行すると太い罫線が色を変えながら順に引かれます。

Sub sample()
    Dim b As Border
    Dim i As Long

    i = 10
    For Each b In Range("B2:E5").Borders
        b.LineStyle = xlContinuous
        b.Weight = xlThick
        b.ColorIndex = i
        i = i + 1
        MsgBox "罫線が引かれました!"
    Next
End Sub
Bordersコレクションのプロパティの設定

Bordersコレクションのプロパティ(この後に説明するLineStyleプロパティ、Weightなど)に値を設定すると、斜線以外のすべての罫線に値が設定されます。

したがって次の例は、格子状に罫線を引きます。

Sub sample()
    Range("B2:E5").Borders.LineStyle = xlContinuous
End Sub
格子状に罫線を引く
格子状に罫線を引く

罫線のスタイル

罫線にはさまざまなスタイルがあります。罫線のスタイルは、BorderオブジェクトまたはBordersコレクションのLineStyleプロパティが保持します。

LineStyleプロパティの値の参照や設定の構文は次の通りです。

Rangeオブジェクト.Borders(罫線の位置).LineStyle
Rangeオブジェクト.Borders(罫線の位置).LineStyle = 罫線のスタイル
Rangeオブジェクト.Borders.LineStyle
Rangeオブジェクト.Borders.LineStyle = 罫線のスタイル

LineStyleプロパティに設定する「罫線のスタイル」は、XlLineStyle列挙型で定義されている次の定数を指定します。

名前説明
xlContinuous1細実線
xlDash-4115破線
xlDashDot4一点鎖線
xlDashDotDot5ニ点鎖線
xlDot-4118点線
xlDouble-4119二重線
xlLineStyleNone-4142なし
xlSlantDashDot13斜め破線
XlLineStyle列挙型の定数

LineStyleプロパティ(とこの後説明するWeightプロパティ)は、[セルの書式設定ダイアログ]の[罫線]タグの[スタイル」に対応しています。

セルの書式設定ダイアログとLineStyleやWeightプロパティの対応
セルの書式設定ダイアログのスタイルと各種プロパティの対応

次のコードは、セル範囲に格子状の破線を引きます。

Sub sample()
    Range("B2:E5").Borders.LineStyle = xlDash
End Sub
格子状に破線を引く
格子状に破線を引く

罫線の太さ

罫線の太さは、BorderオブジェクトまたはBordersコレクションのWeightプロパティが保持します。Weightプロパティの値の参照や設定の構文は次の通りです。

Rangeオブジェクト.Borders(罫線の位置).Weight
Rangeオブジェクト.Borders(罫線の位置).Weight = 罫線の太さ
Rangeオブジェクト.Borders.Weight
Rangeオブジェクト.Borders.Weight = 罫線の太さ

Weightプロパティに設定する罫線の太さは、XlBorderWeight列挙型の定数を指定します。

名前説明
xlMedium-4138
xlHairline1極細
xlThin2
xlThick4
XlBorderWeight列挙型の定数

次の例は、格子状に太い罫線を引きます。

Sub sample()
    Range("B2:E5").Borders.Weight = xlThick
End Sub
格子状に太い罫線を引く
格子状に太い罫線を引く

Weightプロパティも、[セルの書式設定ダイアログ]の[スタイル」に対応する。

罫線の色

罫線の色は、BorderオブジェクトまたはBordersコレクションのColorプロパティまたはColorIndexが保持します。

RGB値で色を設定する ― Colorプロパティ

Colorプロパティには色を表すLong型のRGB値を設定します。Colorプロパティを参照すると設定されているRGB値をLong型で返します。値の参照および設定する構文は次の通りです。

Rangeオブジェクト.Borders(罫線の位置).Color
Rangeオブジェクト.Borders(罫線の位置).Color = RGB値
Rangeオブジェクト.Borders.Color
Rangeオブジェクト.Borders.Color = RGB値

RGB値はRGB関数を使って生成することが出来ます。構文は次の通りです。引数のred、green、blueには、それぞれの色の成分を0~255の範囲の整数値で指定します。

RGB(red, green, blue)

RGB値にはXlRgbColor列挙型で定義された定数を使うこともできます。

インデックス番号で色を設定する ― ColorIndexプロパティ

ColorIndexプロパティには、カラーパレットのインデックス番号、またはXlColorIndex列挙型で定義されている定数を指定します。値の参照および設定する構文は次の通りです。

Rangeオブジェクト.Borders(罫線の位置).ColorIndex
Rangeオブジェクト.Borders(罫線の位置).ColorIndex = インデックス番号またはlColorIndex列挙型の定数
Rangeオブジェクト.Borders.ColorIndex
Rangeオブジェクト.Borders.ColorIndex = インデックス番号またはlColorIndex列挙型の定数

カラーパレットのインデックス番号は1~56です。XlColorIndex列挙型の定数は次の表の通りです。

名前説明
xlColorIndexAutomatic-4105自動設定
xlColorIndexNone-4142色なし
XlColorIndex列挙型の定数

まとめ

よかったらシェアしてね!
  • URLをコピーしました!
目次