初心者必見!VBAで罫線を引く方法をわかりやすく解説!

VBAではExcelに罫線を引くことができますが、「どうやって罫線を引けばいいの?」「色や太さの種類は指定できるの?」といった疑問がでてくると思います。

VBAにて行追加やデータ追加ができるようになったら、罫線を引く方法と削除する方法までマスターして、全自動で表を作れるようになったら便利ですよね!

そこで、この記事ではVBAで罫線を引く方法について、以下の内容で解説していきます!


【基礎】罫線とは何か
【基礎】罫線を設定する方法
【基礎】罫線をクリア(削除)する方法
【発展】罫線の種類を設定する方法
【発展】罫線の色を設定する方法
【発展】罫線の太さ設定する方法
【発展】追加した行まで罫線を引いてみる

VBAで罫線を引く方法をわかりやすく解説していますので、ぜひ参考にしてください!

目次

罫線とは何か

罫線とは、セルを囲むように引く線で、表として分かりやすくするときに使います。

罫線を引く前、引いた後のサンプルを用意しました。

[罫線設定前]

1_罫線とは

[罫線設定後]

2_罫線とは

罫線を引いただけで、表が見やすくなりますよね。

それでは次に、罫線を設定する具体的な書き方について解説していきます!

罫線を設定する方法

セルに罫線を設定する方法

Rangeでセルの範囲を指定して、その中の罫線を引く箇所を指定する方法を解説します。

RangeでC3:E5を範囲選択し、Bordersプロパティを使う場合を例にして解説します。

[書式]

Range(範囲).Borders(引きたい箇所).Linestyle = 罫線の種類

引きたい箇所を指定する定数について表にまとめました。

定数説明
xlDiagonalDown範囲内の各セルの左上隅から右下への罫線
xlDiagonalUp範囲内の各セルの左下隅から右上への罫線
xlEdgeBottom範囲内の下側の罫線
xlEdgeLeft範囲内の左端の罫線
xlEdgeRight範囲内の右端の罫線
xlEdgeTop範囲内の上側の罫線
xlInsideHorizontal範囲外の罫線を除く、範囲内のすべてのセルの水平罫線
xlInsideVertical範囲外の罫線を除く、範囲内のすべてのセルの垂直罫線

C3:E5を1つのまとまった範囲として、上部(図でいう①の部分)に罫線を引きたい場合、[使用例]のコードLineSample1にある①のように記述します。

同じく、左(図でいう②の部分)に罫線を引きたい場合、LineSample1ある②のように・・・以下同様、図中の番号とコードの番号を比較して見てください。

2

罫線の種類はxlContinuousを使い、実線を指定しています。

[使用例]

Sub LineSample1()
    
    '①上部
    Range("C3:E5").Borders(xlEdgeTop).LineStyle = xlContinuous
 
    '②左
    Range("C3:E5").Borders(xlEdgeLeft).LineStyle = xlContinuous
    
    '③下部
    Range("C3:E5").Borders(xlEdgeBottom).LineStyle = xlContinuous
    
    '④右
    Range("C3:E5").Borders(xlEdgeRight).LineStyle = xlContinuous
    
    '⑤範囲内の縦線
    Range("C3:E5").Borders(xlInsideVertical).LineStyle = xlContinuous
    
    '⑥範囲内の横線
    Range("C3:E5").Borders(xlInsideHorizontal).LineStyle = xlContinuous
 
End Sub

[実行結果]

3

すべてを指定したので範囲に格子状の罫線が引けました。

このようにして罫線を引きたい箇所を指定することができます。

セル範囲の外枠に罫線を引く方法

セル範囲の外枠に罫線を引く場合は、上下左右をすべて指定するのではなく、BorderAroundメソッドを使います。

[書式]

Range(範囲).BorderAround LineStyle:=xlContinuous

[使用例]

Sub LineSample2()
 
    Range("C3:E5").BorderAround LineStyle:=xlContinuous
 
End Sub

[実行結果]

4

指定した範囲の外枠に罫線を引くことができました。

セル範囲に格子状に罫線を引く方法

セル範囲に格子状に罫線を引くには、すべて指定する必要はなくBordersプロパティの引数を省略すれば可能です。

[使用例]

Sub LineSample3()
 
    Range("C3:E5").Borders.LineStyle = xlContinuous
 
End Sub

[実行結果]

5

コード1行だけで指定した範囲に格子状の罫線が引けました。

罫線をクリア(削除)する方法

セルの罫線をクリアする方法

罫線の箇所を指定して消すには、xlLineStyleNoneを使います。

[書式]

Range(範囲).Borders(消したい箇所).LineStyle = xlLineStyleNone

左側の罫線だけを消すには、次のようにBordersプロパティの引数にxlEdgeLeftを指定します。

[使用例]

Sub LineSample4()
 
    Range("C3:E5").Borders(xlEdgeLeft).LineStyle = xlLineStyleNone
 
End Sub

[実行結果]

6

指定した範囲の左側だけ罫線を消すことができました。

セル範囲の罫線をクリアする方法

セル範囲のすべての罫線を一気にクリアすることもできます。

[使用例]

すべての罫線を引いた時と同じように、Bordersプロパティの引数を省略します。

Sub LineSample5()
 
    Range("C3:E5").Borders.LineStyle = xlLineStyleNone
 
End Sub

[実行結果]

7

範囲の罫線すべてが消えました。

罫線の種類を設定する方法

ここまでの解説ではxlContinuousを指定し、実線を引きました。

xlContinuous以外を指定し、罫線の種類を変えることができます。

[書式]

Range(範囲).Boders(引きたい箇所).Linestyle = 罫線の種類

罫線の種類の指定を表にまとめます。

定数罫線の種類
xlContinuous1実線(細)
xlDash-4115破線
xlDashDot4一点鎖線
xlDashDotDot5二点鎖線
xlDot-4118点線
xlDouble-4119二重線
xlSlantDashDot13斜め斜線
xlLineStyleNone-4142無し

xlDashを指定し、破線を引きます。

分かりやすいように、先に格子状の罫線を引いた状態から解説します。

[使用例]

Sub LineSample6()
 
    '分かりやすいように、先に格子状の罫線を引く。
    Range("C3:E5").Borders.LineStyle = xlContinuous
    
    Range("C3:E5").Borders(xlEdgeLeft).LineStyle = xlDash
 
End Sub

[実行結果]

8

範囲の左に破線が引けました。

※以降の解説では、このLineSample6を実行したときのシートのままで解説するコードを実行してください。

罫線の色を設定する方法

色を変えるには、BordersプロパティのColorプロパティを使います。

[書式]

Range(範囲).Borders(引きたい箇所).Color = 色

色を設定する定数について、表にまとめました。

定数
vbBlack0x000000
vbRed0x0000FF
vbGreen0x00FF00
vbYellow0x00FFFF
vbBlue0xFF0000
vbMagenta0xFF00FFマゼンタ
vbCyan0xFFFF00シアン
vbWhite0xFFFFFF

[使用例]

Sub LineSample7()

    Range("C3:E5").Borders(xlEdgeTop).Color = vbRed

End Sub

[実行結果]

9

範囲上部が赤に変わりました。

罫線の太さ設定する方法

Weightを使い、罫線の太さを変えることができます。

[書式]

Range(範囲).Borders(引きたい箇所).Weight = 線の太さ

指定する罫線の太さの定数を表にまとめました。

定数罫線の太さ
xlHairline1極細
xlThin2
xlMedium-4138
xlThick4

線の太さは指定しなければ標準のxlThinが選択されるのですが、xlThickを使い太線にします。

[使用例]

Sub LineSample8()

    Range("C3:E5").Borders(xlEdgeBottom).Weight = xlThick

End Sub

[実行結果]

10

範囲下部に太線が引けました。

追加した行まで罫線を引いてみる

今まで解説してきた内容をフルに使い、完全に自動で罫線を入れます。

以下のような表があったとします。

11

社員を2名追記しました。

12

表ヘッダの位置と横幅(つまり6月まで)固定するものとして、追加した社員の行もVBAで罫線を一気に引きましょう

Sub LineSample9()
 
    Dim MaxRow As Long '最終セルの行番号
 
    MaxRow = Range("B2").SpecialCells(xlLastCell).Row
    
    With Range("B4:I" & MaxRow)
        '格子状の線を引く
        .Borders(xlInsideVertical).LineStyle = xlContinuous
        .Borders(xlInsideHorizontal).LineStyle = xlContinuous
    
        '一番外側の枠線を引く
        .Borders(xlEdgeTop).Weight = xlThick
        .Borders(xlEdgeLeft).Weight = xlThick
        .Borders(xlEdgeBottom).Weight = xlThick
        .Borders(xlEdgeRight).Weight = xlThick
    End With
 
End Sub

[実行結果]

13

いかがでしょうか。

表が大きくなればなるほど、全自動で罫線が引けるのはとても便利ですよね。

コード中で使った最終セルの行番号を取得する方法は、以下の記事をご覧ください。

まとめ

本記事では、VBAで罫線の引き方を解説しました。

罫線の種類や色を変える方法も合わせて使い、より実践的な表を作ってみてください。

もしVBAで罫線を引いたり消したりする方法を忘れてしまったら、この記事を思い出してくださいね!

この記事を書いた人

【プロフィール】
DX認定取得事業者に選定されている株式会社SAMURAIのマーケティング・コミュニケーション部が運営。「質の高いIT教育を、すべての人に」をミッションに、IT・プログラミングを学び始めた初学者の方に向け記事を執筆。
累計指導者数4万5,000名以上のプログラミングスクール「侍エンジニア」、累計登録者数1万8,000人以上のオンライン学習サービス「侍テラコヤ」で扱う教材開発のノウハウ、2013年の創業から運営で得た知見に基づき、記事の執筆だけでなく編集・監修も担当しています。
【専門分野】
IT/Web開発/AI・ロボット開発/インフラ開発/ゲーム開発/AI/Webデザイン

目次