VBAではExcelに罫線を引くことができますが、「どうやって罫線を引けばいいの?」「色や太さの種類は指定できるの?」といった疑問がでてくると思います。
VBAにて行追加やデータ追加ができるようになったら、罫線を引く方法と削除する方法までマスターして、全自動で表を作れるようになったら便利ですよね!
そこで、この記事ではVBAで罫線を引く方法について、以下の内容で解説していきます!
【基礎】罫線とは何か
【基礎】罫線を設定する方法
【基礎】罫線をクリア(削除)する方法
【発展】罫線の種類を設定する方法
【発展】罫線の色を設定する方法
【発展】罫線の太さ設定する方法
【発展】追加した行まで罫線を引いてみる
VBAで罫線を引く方法をわかりやすく解説していますので、ぜひ参考にしてください!
罫線とは何か
罫線とは、セルを囲むように引く線で、表として分かりやすくするときに使います。
罫線を引く前、引いた後のサンプルを用意しました。
[罫線設定前]
[罫線設定後]
罫線を引いただけで、表が見やすくなりますよね。
それでは次に、罫線を設定する具体的な書き方について解説していきます!
罫線を設定する方法
セルに罫線を設定する方法
Rangeでセルの範囲を指定して、その中の罫線を引く箇所を指定する方法を解説します。
RangeでC3:E5を範囲選択し、Bordersプロパティを使う場合を例にして解説します。
[書式]
Range(範囲).Borders(引きたい箇所).Linestyle = 罫線の種類
引きたい箇所を指定する定数について表にまとめました。
定数 | 説明 |
---|---|
xlDiagonalDown | 範囲内の各セルの左上隅から右下への罫線 |
xlDiagonalUp | 範囲内の各セルの左下隅から右上への罫線 |
xlEdgeBottom | 範囲内の下側の罫線 |
xlEdgeLeft | 範囲内の左端の罫線 |
xlEdgeRight | 範囲内の右端の罫線 |
xlEdgeTop | 範囲内の上側の罫線 |
xlInsideHorizontal | 範囲外の罫線を除く、範囲内のすべてのセルの水平罫線 |
xlInsideVertical | 範囲外の罫線を除く、範囲内のすべてのセルの垂直罫線 |
C3:E5を1つのまとまった範囲として、上部(図でいう①の部分)に罫線を引きたい場合、[使用例]のコードLineSample1にある①のように記述します。
同じく、左(図でいう②の部分)に罫線を引きたい場合、LineSample1ある②のように・・・以下同様、図中の番号とコードの番号を比較して見てください。
罫線の種類は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
[実行結果]
すべてを指定したので範囲に格子状の罫線が引けました。
このようにして罫線を引きたい箇所を指定することができます。
セル範囲の外枠に罫線を引く方法
セル範囲の外枠に罫線を引く場合は、上下左右をすべて指定するのではなく、BorderAroundメソッドを使います。
[書式]
Range(範囲).BorderAround LineStyle:=xlContinuous
[使用例]
Sub LineSample2() Range("C3:E5").BorderAround LineStyle:=xlContinuous End Sub
[実行結果]
指定した範囲の外枠に罫線を引くことができました。
セル範囲に格子状に罫線を引く方法
セル範囲に格子状に罫線を引くには、すべて指定する必要はなくBordersプロパティの引数を省略すれば可能です。
[使用例]
Sub LineSample3() Range("C3:E5").Borders.LineStyle = xlContinuous End Sub
[実行結果]
コード1行だけで指定した範囲に格子状の罫線が引けました。
罫線をクリア(削除)する方法
セルの罫線をクリアする方法
罫線の箇所を指定して消すには、xlLineStyleNoneを使います。
[書式]
Range(範囲).Borders(消したい箇所).LineStyle = xlLineStyleNone
左側の罫線だけを消すには、次のようにBordersプロパティの引数にxlEdgeLeftを指定します。
[使用例]
Sub LineSample4() Range("C3:E5").Borders(xlEdgeLeft).LineStyle = xlLineStyleNone End Sub
[実行結果]
指定した範囲の左側だけ罫線を消すことができました。
セル範囲の罫線をクリアする方法
セル範囲のすべての罫線を一気にクリアすることもできます。
[使用例]
すべての罫線を引いた時と同じように、Bordersプロパティの引数を省略します。
Sub LineSample5() Range("C3:E5").Borders.LineStyle = xlLineStyleNone End Sub
[実行結果]
範囲の罫線すべてが消えました。
罫線の種類を設定する方法
ここまでの解説ではxlContinuousを指定し、実線を引きました。
xlContinuous以外を指定し、罫線の種類を変えることができます。
[書式]
Range(範囲).Boders(引きたい箇所).Linestyle = 罫線の種類
罫線の種類の指定を表にまとめます。
定数 | 値 | 罫線の種類 |
---|---|---|
xlContinuous | 1 | 実線(細) |
xlDash | -4115 | 破線 |
xlDashDot | 4 | 一点鎖線 |
xlDashDotDot | 5 | 二点鎖線 |
xlDot | -4118 | 点線 |
xlDouble | -4119 | 二重線 |
xlSlantDashDot | 13 | 斜め斜線 |
xlLineStyleNone | -4142 | 無し |
xlDashを指定し、破線を引きます。
分かりやすいように、先に格子状の罫線を引いた状態から解説します。
[使用例]
Sub LineSample6() '分かりやすいように、先に格子状の罫線を引く。 Range("C3:E5").Borders.LineStyle = xlContinuous Range("C3:E5").Borders(xlEdgeLeft).LineStyle = xlDash End Sub
[実行結果]
範囲の左に破線が引けました。
※以降の解説では、このLineSample6を実行したときのシートのままで解説するコードを実行してください。
罫線の色を設定する方法
色を変えるには、BordersプロパティのColorプロパティを使います。
[書式]
Range(範囲).Borders(引きたい箇所).Color = 色
色を設定する定数について、表にまとめました。
定数 | 値 | 色 |
---|---|---|
vbBlack | 0x000000 | 黒 |
vbRed | 0x0000FF | 赤 |
vbGreen | 0x00FF00 | 緑 |
vbYellow | 0x00FFFF | 黄 |
vbBlue | 0xFF0000 | 青 |
vbMagenta | 0xFF00FF | マゼンタ |
vbCyan | 0xFFFF00 | シアン |
vbWhite | 0xFFFFFF | 白 |
[使用例]
Sub LineSample7() Range("C3:E5").Borders(xlEdgeTop).Color = vbRed End Sub
[実行結果]
範囲上部が赤に変わりました。
罫線の太さ設定する方法
Weightを使い、罫線の太さを変えることができます。
[書式]
Range(範囲).Borders(引きたい箇所).Weight = 線の太さ
指定する罫線の太さの定数を表にまとめました。
定数 | 値 | 罫線の太さ |
---|---|---|
xlHairline | 1 | 極細 |
xlThin | 2 | 細 |
xlMedium | -4138 | 中 |
xlThick | 4 | 太 |
線の太さは指定しなければ標準のxlThinが選択されるのですが、xlThickを使い太線にします。
[使用例]
Sub LineSample8() Range("C3:E5").Borders(xlEdgeBottom).Weight = xlThick End Sub
[実行結果]
範囲下部に太線が引けました。
追加した行まで罫線を引いてみる
今まで解説してきた内容をフルに使い、完全に自動で罫線を入れます。
以下のような表があったとします。
社員を2名追記しました。
表ヘッダの位置と横幅(つまり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
[実行結果]
いかがでしょうか。
表が大きくなればなるほど、全自動で罫線が引けるのはとても便利ですよね。
コード中で使った最終セルの行番号を取得する方法は、以下の記事をご覧ください。
まとめ
本記事では、VBAで罫線の引き方を解説しました。
罫線の種類や色を変える方法も合わせて使い、より実践的な表を作ってみてください。
もしVBAで罫線を引いたり消したりする方法を忘れてしまったら、この記事を思い出してくださいね!