【VBA】セルに罫線を引く3つの方法

2021年11月30日

今回はVBAでセルに罫線を引く方法を紹介します。

罫線を引く方法は難しくはないのですが、マクロの記録を使うとたくさんコードが出てくるため理解に苦しむかもしれません。

きれいなコードを書きたいという人は、この記事でVBAらしい罫線の引き方を覚えてみてください

この記事は次のような人に向けて書いています。

  • VBAで罫線を引く方法を知りたい
  • マクロの記録で作ったコードが理解できなくて困っている
  • きれいなコードを書きたい

罫線を引く3つの方法

罫線を引く方法は大きく3つに分かれます。

上手に使い分ければ、すっきりとした見やすいプログラムになります。

1.全体に罫線を引く

画像のように全体に罫線を引きたい場合は、次のような1行のコードで済みます。

Sub BorderAll()
'全体に罫線を引く
    Range("A1:B2").Borders.LineStyle = xlContinuous
End Sub

Bordersはコレクションなのですが、引数を指定しないと全体に罫線を引くことができます。

2.個別に罫線を引く

全体ではなく個別に罫線を引きたい場合は、Bordersコレクションに引数を指定します。

セルの右側だけに罫線を引きたい、といった場合はこのやり方を取ります。

また斜めの罫線を引きたい場合も、この方法で指定する必要があります。

Sub BorderSeparate()
'個別に罫線を引く
    With Range("A1:B2")
        .Borders(xlEdgeTop).LineStyle = xlContinuous '範囲内の上側の罫線
        .Borders(xlEdgeBottom).LineStyle = xlContinuous '範囲内の下側の罫線
        .Borders(xlEdgeLeft).LineStyle = xlContinuous '範囲の左側の罫線
        .Borders(xlEdgeRight).LineStyle = xlContinuous '範囲の右端の罫線
        .Borders(xlInsideHorizontal).LineStyle = xlContinuous '範囲内のすべてのセルの水平罫線
        .Borders(xlInsideVertical).LineStyle = xlContinuous '範囲内のすべてのセルの垂直罫線
        .Borders(xlDiagonalDown).LineStyle = xlContinuous '範囲内の各セルの左上隅から右下に移動する罫線
        .Borders(xlDiagonalUp).LineStyle = xlContinuous '範囲の各セルの左下隅から右上隅に移動する罫線
    End With
End Sub

上のコードのように、どの位置に罫線を引きたいかに応じて入れる引数を変更します。

3.外枠の罫線を引く

画像のように外枠のみ罫線を引く方法もあります。
この場合もコードは1行で済みます。

Sub BorderOutside()
'外側に罫線を引く
    Range("A1:B2").BorderAround (xlContinuous)
End Sub

外側の罫線を引く時にはBorderAroundメソッドを使用します。

他の2つと違ってプロパティではなく、メソッドの引数として線のデザインを指定する点に注意してください。

デザインはBorderAround(線種, 太さ, 色)の形で設定できます。

線のデザインの方法(線種/太さ/色)

罫線は線種/太さ/色の3つのデザインを設定することができます。
ここまでのコードも、実はLineStyleプロパティで線種の設定をしています。

ここからは3つのデザインを設定する方法について説明します。

線種の設定方法(LineStyleプロパティ)

線種の設定はLineStyleプロパティで行います。
例:Range(“A1:B2").Borders.LineStyle = xlContinuous

プロパティで設定できる線種は次の表のようになるので、必要に応じて設定してみてください。

名前説明
xlContinuous実線
xlDash破線
xlDashDot一点鎖線
xlDashDotDotニ点鎖線
xlDot点線
xlDouble2 本線
xlLineStyleNone線なし
xlSlantDashDot斜破線

太さの設定方法(Weightプロパティ)

線種の設定はWeightプロパティで行います。
例:Range(“A1:B2").Borders.Weight = xlThin

プロパティで設定できる太さは次の表のようになるので、必要に応じて設定してみてください。

名前説明
xlHairline細線 (最も細い罫線)
xlMedium普通
xlThick太線 (最も太い罫線)
xlThin極細

色の設定方法(Color/ColorIndexプロパティ)

色の設定はColor/ColorIndexプロパティで行います。
例:Range(“A1:B2").Borders.Color = vbRed

プロパティで設定できる色は次の表のようなものがあります。

定数
vbBlack
vbRed
vbGreen
vbYellow
vbBlue
vbMagentaマゼンタ
vbCyanシアン
vbWhite

他にも設定できる色はあります。この表にない色を設定したい場合は、下記の記事を見てください。
また、Colorindexプロパティでも設定できるのですが、おすすめしていません。その理由も下記の記事内で説明しています。

《VBA初心者におすすめの本》
VBA初心者には、株式会社すごい改善さんの本が分かりやすくておすすめです。

created by Rinker
技術評論社
¥2,178 (2021/12/01 14:22:42時点 Amazon調べ-詳細)

動画で学びたい人には、すごい改善さんのUdemy講座をおすすめします。
【累計36万部著者が教える】たった1日で!まったくの初心者でも最短でExcel VBAを仕事で活用できるようになる講座

他の「VBA」の記事はこちらからどうぞ

VBA

Posted by やろまい