罫線を引くVBA(マクロ)

スポンサーリンク

追記:191027

罫線の引くExcelVBAコードをこちらで紹介しています。
良ければ参考にしてみてください。

罫線を引くVBA(マクロ)

Excel(エクセル)のワークシートで表を作って作業していると線が消えたり、変になったりすることがありますよね?マクロ(VBA)をファイルの中に作っておくとずれてしまった罫線を瞬時に元通りにすることが可能です。今回はマクロ機能で作成される罫線を引くVBAコードと罫線を引くVBAコードの修正方法をお伝えします。

スポンサーリンク

罫線を引くマクロの記録

15-001

上の画像のような罫線を引く過程をマクロで記録すると以下のコードが記録されます。とても長くてわかりにくいですが、マクロ機能ではムダなコードも記録されているので、きちんと整理するとかなり見やすいコードになります。

Sub Macro1()

Range(“C4:K20”).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
End Sub

罫線を引くマクロの解説

選択している範囲に対して罫線を引く場合、マクロには以下の情報が設定されます。
各条件はWithステートメントを用いて一括りになっています。(①で選択した範囲)

①対象範囲のどの部分に線を引くか

[範囲].Borders(xlEdgeLeft):[範囲]の左側
[範囲].Borders(xlEdgeRight):[範囲]の右側
[範囲].Borders(xlEdgeTop):[範囲]の上側
[範囲].Borders(xlEdgeBottom):[範囲]の下側
[範囲].Borders(xlInsideHorizontal):範囲の中にあるセルの横の区切り線
[範囲].Borders(xlInsideVertical):範囲の中にあるセルの縦の区切り線
[範囲].Borders(xlDiagonalDown):範囲内のセルに対して左上から右下に引く罫線
[範囲].Borders(xlDiagonalUp):範囲内のセルに対して左下から右上に引く罫線

②罫線の種類(点線、実線など)

[①で示した場所].LineStyle = xlContinuous:①で示した場所に引く線を連続線(実線)とする。
[①で示した場所].LineStyle = xlDot:①で示した場所に引く線を点線とする。
などになります。

線を消す場合は
[①で示した場所].LineStyle = xlNoneとなります。

③罫線の色

[①で示した場所].ColorIndex = 0:①で示した場所に引く線の色を黒にする。
黒でよい場合は0で表すか、記述がなくても大丈夫です。

④罫線の色の明るさ

[①で示した場所].TintAndShade = 0:①で示した場所に引く線の明るさは標準にする。
-1,0,1のいずれかで表します。
あまり使用しないので、こだわりがないときは0に設定するかもしくはこの行を記載しなくても大丈夫です。

⑤罫線の色の太さ

[①で示した場所].Weight = xlThin:①で示した場所に引く線の太さは「細め」にする。
[①で示した場所].Weight = xlMedium:①で示した場所に引く線の太さは「太線」にする。
細線にしたい場合は記載しなくても大丈夫です。

余分な行の削除と整理

慣れていないとWithでくくられた範囲が何を示しているのかわかりにくいですが、実はすごくシンプルにできます。
線を引く際の標準の設定は線の種類は「直線」で「黒」で「細い線」です。
このままの設定でよければ上記のコードは以下のように省略して記載できます。

Sub Macro1()

Range(“C4:K20”).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlContinuous
Selection.Borders(xlEdgeTop).LineStyle = xlContinuous
Selection.Borders(xlEdgeBottom).LineStyle = xlContinuous
Selection.Borders(xlEdgeRight).LineStyle = xlContinuous
Selection.Borders(xlInsideVertical).LineStyle = xlContinuous
Selection.Borders(xlInsideHorizontal).LineStyle = xlContinuous

End Sub

また上下左右と範囲内のセルの区切り位置全てに同じ種類の線を入れる場合は(xl~~)の部分を記載しないことで一くくりに記述できます。

Sub Macro1()

Range(“C4:K20”).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders.LineStyle = xlContinuous

End Sub

これですごくシンプルになりました。線の種類を変えたりする場合はその部分だけ後で記載しても良いです。
あと~Select Selection~は時間がかかる元になるので、私は通常範囲を直接指定します。

Sub Macro1()

With Range(“C4:K20”)
.Borders(xlDiagonalDown).LineStyle = xlNone
.Borders(xlDiagonalUp).LineStyle = xlNone
.Borders.LineStyle = xlContinuous
End With

End Sub

変数を用いて連続で罫線を修正する場合は以下のようにしておくと便利です。

Sub Macro1()

With Range(Cells(4,3),Cells(20,11))
.Borders(xlDiagonalDown).LineStyle = xlNone
.Borders(xlDiagonalUp).LineStyle = xlNone
.Borders.LineStyle = xlContinuous
End With

End Sub

このRange(Cells(4,3),Cells(20,11))の数字部分を変数に置き換えることでセルの中に文字が入っている限り繰り返し罫線を引くことが可能です。
組み合わせて、今使っている表の罫線を修正することができます。

おすすめ書籍 (広告)

コメント