スライドショー

初心者必見!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で最終行を取得するには?|End(xlUp)、SpecialCells(xlLastCell)
更新日 : 2019年4月24日

まとめ

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

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

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

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

本多 農

本多 農

関西在住のITエンジニアです。普通の会社に勤務しながら、侍エンジニアのインストラクター、ライターとして活動しています。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説