エクセルVBAでセル範囲での罫線の設定の方法について分かりやすく説明します。
罫線の設定位置・線種・太さ・色と選択する項目が多いですが、順序だてれば大丈夫です。
こんにちは じゅんぱ店長 (@junpa33) です。
普段、Excel で事務・集計作業を行う時には、ほぼ必ず利用する機能の中で、” 線を引く ” というのがあります。
必要なセルを「枠で囲む」とか、合計セルの下に「2重線」とか、作表する時などには必須です。
エクセルのシート上の普通の作業であれば、リボン上のボタンやセルの書式設定を使って簡単に作業を済ませることが出来るはずです。
今回は、この作業をエクセルVBAで行うとすれば、どのようなコードを使えばよいのかということを説明していきます。
コンテンツ
セルに罫線を設定するには

セルに罫線を設定するためには、Borderオブジェクトに関連するプロパティを利用して線種・太さ・色を指定していくことになります。
解説用語的には、Borderオブジェクト、Bordersコレクション、Bordersプロパティという言葉が使われます。
BordersコレクションはBorderオブジェクトの集まり
Borderオブジェクトとはセル範囲の一つの線分自身のことを表します。
セル範囲のすべてのBorderオブジェクトは8種あり、その纏まりをBordersコレクションとしています。
基本、Bordersコレクションの8種の線分(Borderオブジェクト)はそれぞれ個別に指定することが出来ます。
- Borders(オブジェクトの定数)
(定数)を省略した場合は、xlEdgeBottom、xlEdgeLeft、xlEdgeRight、xlEdgeTop、xlInsideHorizontal、xlInsideVertical を同時指定したとみなされます。
| オブジェクトの定数 | 位置説明 | 
|---|---|
| xlDiagonalDown | 範囲内の各セルの左上隅から右下への罫線 | 
| xlDiagonalUp | 範囲内の各セルの左下隅から右上への罫線 | 
| xlEdgeBottom | 範囲内の下側の罫線 | 
| xlEdgeLeft | 範囲内の左端の罫線 | 
| xlEdgeRight | 範囲内の右端の罫線 | 
| xlEdgeTop | 範囲内の上側の罫線 | 
| xlInsideHorizontal | 範囲外の罫線を除く、範囲内のすべてのセルの水平罫線 | 
| xlInsideVertical | 範囲外の罫線を除く、範囲内のすべてのセルの垂直罫線 | 
線種・太さ・色のBordersプロパティ
Bordersプロパティは、Borderオブジェクトの性格を表します。すなわち「線種・太さ・色」を規定します。
特に線種と太さの組み合わせでは、利用できない(制限のある)ものもありますので、注意してください。
- Borders(オブジェクトの定数).プロパティ名=プロパティの定数
線種を選ぶ
罫線の種類には「7種+取り消し」の合計8つの定数があります。
プロパティ名:LineStyle
| プロパティの定数 | 線種の説明 | 
|---|---|
| xlContinuous (デフォルト設定) | 実線 | 
| xlDash | 破線 | 
| xlDashDot | 一点鎖線 | 
| xlDashDotDot | 二点鎖線 | 
| xlDot | 点線 | 
| xlDouble | 2本線 | 
| xlSlantDashDot | 斜破線 | 
| xlLineStyleNone 又はxlNone | 線なし | 
太さを選ぶ
太さの種類には4種の太さで4つの定数があります。
プロパティ名:Weight
| プロパティの定数 | 太さの説明 | 
|---|---|
| xlHairline | 極細線 | 
| xlMedium | 中太線 | 
| xlThick | 極太線 | 
| xlThin (デフォルト設定) | 細線 | 
色を選ぶ
色を選択するプロパティとしては、「Colorプロパティ」と「ColorIndexプロパティ」のどちらでも利用することが出来ます。
どちらを使っても自由ですが、それぞれに一長一短がありますので、全くの好みの問題で良いと思います。
Colorプロパティなら、
RGB3要素指定だとVBAコードのメンテナンス時に「何色か分からない」ということになりかねないので、出来るだけ「定数」での指定をするのが吉(8色しか使えませんが・・・)
ColorIndexプロパティなら、
いつも使うインデックス番号を決めておけば「何色か分からない」こともないでしょう。最悪56色カラーパレットの資料をどこかに保存しておけば問題なし。でも、最古級のプロパティなのでいつ廃止になるかの恐怖もなくはない。
Colorプロパティ
RGBで指定する場合は、0から255の範囲でレベルを任意に指定することが出来ます。
プロパティ名:Color
| プロパティの定数 | RGB指定 | 色 | 
|---|---|---|
| vbBlack | RGB(0,0,0) | 黒 | 
| vbRed | RGB(255,0,0) | 赤 | 
| vbGreen | RGB(0,255,0) | 緑 | 
| vbYellow | RGB(255,255,0) | 黄 | 
| vbBlue | RGB(0,0,255) | 青 | 
| vbMagenta | RGB(255,0,255) | マゼンタ | 
| vbCyan | RGB(0,255,255) | シアン | 
| vbWhite | RGB(255,255,255) | 白 | 
ColorIndexプロパティ
従来からの56色カラーパレットでのインデックス番号で色を指定します。

| 1 | 53 | 52 | 51 | 49 | 11 | 55 | 56 | 
| 9 | 46 | 12 | 10 | 14 | 5 | 47 | 16 | 
| 3 | 45 | 43 | 50 | 42 | 41 | 13 | 48 | 
| 7 | 44 | 6 | 4 | 8 | 33 | 54 | 15 | 
| 38 | 40 | 36 | 35 | 34 | 37 | 39 | 2 | 
| 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 
| 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 
セルの枠線を実際に引いてみる
今までの説明から実際に罫線を設定してみます。
セルB3からE8の範囲でそれぞれのセルに罫線の設定を適用させます。
Sub 罫線サンプル1()
    Range("B3:E8").Select
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .Color = RGB(0, 0, 255)
    End With
    With Selection.Borders(xlDiagonalDown)
        .LineStyle = xlDash
        .Color = vbRed
    End With
End Sub
セルの外枠だけに罫線を引く特別な設定方法

セル1つだけなら「外枠だけ罫線を引く」という言葉に意味は無いですが、
複数セルの範囲の外枠に罫線を引くとか、外枠だけ太線にするとか、表作成では普通に有ることです。
その場合、これまでに説明した方法では、基本、セル1つずつを対象にしているので、コード作りが非常に大変です。
ここは、「BorderAroundメソッド」を使って一挙に罫線を引いてしまいます。
BorderAroundメソッドを利用する
BorderAroundはメソッドなので、これまでのプロパティの設定記述とは少々異なります。
- BorderAround LineStyle , Weight , [ ColorIndex, Color ]
このBorderAroundメソッドで設定されるのは、あくまでも外枠の罫線だけで内側の罫線については何も設定することは出来ません。
BorderAroundを実際に使ってみる
セルB3からE8の範囲でその外枠に極太線の実線を設定してみます。
Sub 罫線サンプル2()
    With Range("B3:E8")
        .BorderAround LineStyle:=xlContinuous, Weight:=xlThick
    End With
End Sub
セルの罫線を消去する方法

セルの罫線を消し去る方法はいくつかあります。
罫線を指定しながら消去するには「xlLineStyleNone」あるいは「False」を指定します。
- セルB3からE8の範囲での斜線をクリアします。
- 外枠右端の太線をクリアします。
- セルC5からD5の範囲の下側の罫線をクリアします。
Sub 罫線サンプル3()
    With Range("B3:E8")
        .Borders(xlDiagonalDown).LineStyle = False
        .Borders(xlEdgeRight).LineStyle = xlLineStyleNone
    End With
    With Range("C5:D5")
        .Borders(xlEdgeBottom).LineStyle = xlLineStyleNone
    End With
End Sub
罫線全体も含めたセルの書式設定を一発消去するには「ClearFormat」
ClesrFormatを利用すると、セルに設定したすべての書式設定がクリアされますので、注意が必要です。
用途に合った使い方が必要です。
 シートクリアーを目的のメソッド別にVBA最速理解
   シートクリアーを目的のメソッド別にVBA最速理解  セルにある値も含めて全て消し去る場合は、「Clear」
罫線を消去するというよりは、データをクリアするという考えのもと使用することが必要です。
VBAでセルに罫線を設定する まとめ

セルに罫線を設定することは、VBAコード組み立ての中でも非常に一般的に多く行われます。
作表資料作成時には必須の項目と言えるでしょう。
なのでこの項目は必ずできるように習得しておきましょう。
エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。
 エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です
   エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です  
今回の記事はここまでです。 最後までご覧いただき有難うございました。
<記事内容についての告知>
VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。
 
                





