VBAでセルに罫線を設定する 位置・線種・太さ・色

vbaborder1eyecatch

エクセルVBAでセル範囲での罫線の設定の方法について分かりやすく説明します。
罫線の設定位置・線種・太さ・色と選択する項目が多いですが、順序だてれば大丈夫です。

こんにちは じゅんぱ店長 (@junpa33) です。

普段、Excel で事務・集計作業を行う時には、ほぼ必ず利用する機能の中で、” 線を引く ” というのがあります。

必要なセルを「枠で囲む」とか、合計セルの下に「2重線」とか、作表する時などには必須です。

エクセルのシート上の普通の作業であれば、リボン上のボタンやセルの書式設定を使って簡単に作業を済ませることが出来るはずです。

今回は、この作業をエクセルVBAで行うとすれば、どのようなコードを使えばよいのかということを説明していきます。

セルに罫線を設定するには

vbaborder1004

セルに罫線を設定するためには、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点線
xlDouble2本線
xlSlantDashDot斜破線
xlLineStyleNone 又はxlNone線なし

太さを選ぶ

太さの種類には4種の太さで4つの定数があります。

プロパティ名:Weight

プロパティの定数太さの説明
xlHairline極細線
xlMedium中太線
xlThick極太線
xlThin (デフォルト設定)細線

色を選ぶ

色を選択するプロパティとしては、「Colorプロパティ」と「ColorIndexプロパティ」のどちらでも利用することが出来ます。

どちらを使っても自由ですが、それぞれに一長一短がありますので、全くの好みの問題で良いと思います。

Colorプロパティなら、

RGB3要素指定だとVBAコードのメンテナンス時に「何色か分からない」ということになりかねないので、出来るだけ「定数」での指定をするのが吉(8色しか使えませんが・・・)

ColorIndexプロパティなら、

いつも使うインデックス番号を決めておけば「何色か分からない」こともないでしょう。最悪56色カラーパレットの資料をどこかに保存しておけば問題なし。でも、最古級のプロパティなのでいつ廃止になるかの恐怖もなくはない。

Colorプロパティ 

RGBで指定する場合は、0から255の範囲でレベルを任意に指定することが出来ます。

プロパティ名:Color

プロパティの定数RGB指定
vbBlackRGB(0,0,0)
vbRedRGB(255,0,0)
vbGreenRGB(0,255,0)
vbYellowRGB(255,255,0)
vbBlueRGB(0,0,255)
vbMagentaRGB(255,0,255)マゼンタ
vbCyanRGB(0,255,255)シアン
vbWhiteRGB(255,255,255)

ColorIndexプロパティ

従来からの56色カラーパレットでのインデックス番号で色を指定します。

vbafontsys001
153525149115556
94612101454716
345435042411348
744648335415
384036353437392
1718192021222324
2526272829303132

セルの枠線を実際に引いてみる

今までの説明から実際に罫線を設定してみます。

セルB3からE8の範囲でそれぞれのセルに罫線の設定を適用させます。

MEMO

With・・End Withの使い方はこの記事を参考にしてください。

vbawithstateeyecatch With~End Withの使い方。VBAコードを簡潔に記述する
コード
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
vbaborder1001

セルの外枠だけに罫線を引く特別な設定方法

vbaborder1005

セル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
vbaborder1002

セルの罫線を消去する方法

vbaborder1006

セルの罫線を消し去る方法はいくつかあります。

罫線を指定しながら消去するには「xlLineStyleNone」あるいは「False」を指定します。

  1. セルB3からE8の範囲での斜線をクリアします。
  2. 外枠右端の太線をクリアします。
  3. セル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
vbaborder1003

罫線全体も含めたセルの書式設定を一発消去するには「ClearFormat」

ClesrFormatを利用すると、セルに設定したすべての書式設定がクリアされますので、注意が必要です。

用途に合った使い方が必要です。

vbacleareyecatchエクセルVBA シートのクリアーを目的のメソッド別に最速理解

セルにある値も含めて全て消し去る場合は、「Clear」

罫線を消去するというよりは、データをクリアするという考えのもと使用することが必要です。

vbacleareyecatchエクセルVBA シートのクリアーを目的のメソッド別に最速理解

VBAでセルに罫線を設定する まとめ

セルに罫線を設定することは、VBAコード組み立ての中でも非常に一般的に多く行われます。

作表資料作成時には必須の項目と言えるでしょう。

なのでこの項目は必ずできるように習得しておきましょう。

エクセルVBAの独習には動画学習という方法もあります。 目と耳両方を使って学習することでさらに勉強効率を上げることもできます。
Udemy1eyecatch エクセルVBA初級者がUdemyで動画学習する講座おすすめ5選と無料講座の上手な使い方。

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。
vbastudyeyecatch002 エクセルVBAを独学で習得する!ために大切な7つのポイントを解説します

今回の記事はここまでです。   最後までご覧いただき有難うございました。

 

 

<記事内容についての告知>VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。