マクロで罫線を引く方法のご紹介です。
マクロで罫線を引く方法
罫線(実線)を引く
対象.borders.linestyle = xlContinuous
対象.borders.linestyle = xlContinuous

マクロを開き、Range(“A1:C3”).Borders.LineStyle = xlContinuous(A1~C3の書式設定(罫線)に、実線の罫線を設定する)と記述します。

これを何もないセルA1~C3に対して実行すると……。

「格子」の罫線が描かれました。
セルの中で位置を指定して罫線を引く

Bordersプロパティの後に()を入れて位置を記入することで、罫線を引く箇所を指定することができます(引数を指定しない場合、上記のように「上下左右」を対象とします)。
引数はそれぞれ定数で指定することができ、たとえばRange(“B2”).Borders(xlEdgeTop).LineStyle = xlContinuousと記入すれば、
引数はそれぞれ定数で指定することができ、たとえばRange(“B2”).Borders(xlEdgeTop).LineStyle = xlContinuousと記入すれば、

指定したセルに対して上側だけ罫線が引かれます。

同様にBorders(xlEdgeBottom)で下線、

Borders(xlEdgeLeft)で左線、

Borders(xlEdgeRight)で右線を引くことができます。

ちなみに、B2~D4を指定して上罫線を引くと、

B2~D2だけ上線が引かれます。これは仕様です。

マクロ抜きで複数範囲を選択し、

上線を引いてみるとわかりやすいんですが、

複数範囲を選択して上線を引くと、一番上側(外側)の枠にだけ罫線が適用されます。これは下も右も左も同じです。

今度は選択範囲を広げて、Range(“B2:D8”).Borders(xlInsideHorizontal).LineStyle = xlContinuousを指定すると、

内側の、選択されたセルとセルの間にだけ横線が引かれます(単独セル、横一列のセルに使った場合は何も起きない)。

同様にBorders(xlInsideVertical)を指定すると、選択範囲のセルの間に縦線が引かれます(単独セル、縦一列のセルに使った場合は何も起きない)。このふたつは外枠には線が引かれません。

Range(“B2:D8”).Borders(xlDiagonalDown).LineStyle = xlContinuousと指定すれば、

このように右下に流れる斜線が引けます。

Borders(xlDiagonalUp)を指定すると、左下に流れる斜線となります。
Bordersプロパティで使える位置定数まとめ(xlBordersIndex定数)
上側:xlEdgeTop
下側:xlEdgeBottom
左側:xlEdgeLeft
右側:xlEdgeRight
セル境界水平:xlInsideHorizontal
セル境界垂直:xlInsideVertical
右下がりの斜線:xlDiagonalDown
右上がりの斜線:xlDiagonalUp
上側:xlEdgeTop
下側:xlEdgeBottom
左側:xlEdgeLeft
右側:xlEdgeRight
セル境界水平:xlInsideHorizontal
セル境界垂直:xlInsideVertical
右下がりの斜線:xlDiagonalDown
右上がりの斜線:xlDiagonalUp
線の種類を変更する
罫線を消す方法
罫線を消したい場合は、値にxllinestylenoneを指定します。
罫線(実線)を消す
対象.borders.linestyle = xlLineStyleNone
対象.borders.linestyle = xlLineStyleNone

今度は、Range(“A1:C3”).Borders.LineStyle = xlLineStyleNone(A1~A3の周囲の罫線を消す)と記述します。

実線で囲まれたセルA1~C3に対してこのマクロを実行すると……。。

セルの周囲の実線が消えました。線を消すということは、実際には線の種類を変更しており、xlContinuousやxlLineStyleNone以外の定数を指定することで線の種類を変更できます。
なお、罫線をクリアする場合、斜線は別に指定する必要があります。

ExcelVBA(マクロ)でワークシートの罫線をすべてクリアする方法/Borders.LineStyleプロパティの使い方
シート状の罫線を全てクリアする方法のご紹介です。
手動でやるのと同様、斜線はちょっと扱いが別になっています。
使用可能な線の種類
指定できる定数は、次の通りとなります。
LineStyleプロパティで使える定数まとめ(xlLineStyle定数)
実線:xlContinuous
破線:xlDash
点線:xlDot
一点鎖線:xlDashDot
二点鎖線:xlDashDotDot
斜め破線:xlSlantDashDot
二重線:xlDouble
線なし:xlLineStyleNone(Falseでも可)
実線:xlContinuous
破線:xlDash
点線:xlDot
一点鎖線:xlDashDot
二点鎖線:xlDashDotDot
斜め破線:xlSlantDashDot
二重線:xlDouble
線なし:xlLineStyleNone(Falseでも可)

B2~D4に対して、色んな線の種類を引いてみましょう。画像のxlContinuous(実線)の部分を書き変えていきます。

xlDash(破線)、

xlDot(点線)

xlDashDot(一点鎖線)、

xlDashDotDot(二点鎖線)、

xlSlantDashDot(斜め破線)、

そしてxlDouble(二重線)、となります。先述の通り、線を消したい場合はxlLineStyleNoneを指定します。
線の太さについて
線の太さの変更にはWeightプロパティを用います。下記記事で解説しています。

ExcelVBA(マクロ)で罫線の太さを変更する方法/Borders.Weightプロパティの使い方およびLineStyleとの相性
マクロで罫線を作る時、線の種類以外に線の太さも指定することができます。ただし、LineStyleの設定によっては無効となる場合もあり、その相性についても記述しています。
LineStyleとWeightを同時に指定すると、どちらかが無効化されることがあります。その点についても説明していますので、実際に適用する前に参照するなり、サンプルコード動かしてみるなりすることをおすすめします。
マクロで罫線を引く方法については以上です。

Excel(エクセル):罫線
罫線の引き方、編集、設定方法まとめです。
Excel操作で罫線
基本の罫線の作り方、引き方、削除方法です。
基本その2、罫線の種類の変更方法です。セルの一部だけに線を引く方法、セルの書式設定で罫線を引く方法につ...

関数・演算子・メソッド・プロパティ名から探すExcel/VBA(マクロ)使い方・組み合わせ方まとめ
こちらはExcelやメソッドの諸機能を、機能の名称から探せるまとめ記事です。
コメント