VBAではExcelに罫線を引くことができます。罫線を引けるようになれば表も作成できるようになるのでぜひマスターしましょう!
罫線を設定する方法
罫線とは
罫線とはセルを囲う線のことであり、罫線を引くことで表が視認しやすくなります。
罫線設定前
罫線設定後
罫線を引くと表が見やすくなりますね!
セルに罫線を設定する方法
Range関数でセルの範囲を指定し、そのセル内の罫線を引く箇所を指定します。
【基本構文】
Range(範囲).Borders(引く箇所).Linestyle=罫線の種類
【罫線の箇所】
定数 | 説明 |
---|---|
xlDiagonalDown | 範囲内の各セルの左上隅から右下への罫線 |
xlDiagonalUp | 範囲内の各セルの左下隅から右上への罫線 |
xlEdgeTop | 範囲内の上側の罫線 |
xlEdgeBottom | 範囲内の下側の罫線 |
xlEdgeLeft | 範囲内の左端の罫線 |
xlEdgeRight | 範囲内の右端の罫線 |
xlInsideHorizontal | 範囲外の罫線を除く、範囲内全てのセルの水平罫線 |
xlInsideVertical | 範囲外の罫線を除く、範囲内全てのセルの垂直罫線 |
【罫線の種類】
定数 | 値 | 罫線の種類 |
---|---|---|
xlContinuous | 1 | 実線(細) |
xlDash | -4115 | 破線 |
xlDashDot | 4 | 一点鎖線 |
xlDashDotDot | 5 | 二点鎖線 |
xlDot | -4118 | 点線 |
xlDouble | -4119 | 二重線 |
xlSlantDashDot | 13 | 斜め破線 |
xlLineStyleNone | -4142 | 無し |
ここからは具体的なコードで解説します。
【実行コード】
Rangeで範囲を指定して、Bordersプロパティで罫線を引く箇所を指定、最後に線の種類を指定します。実行コードと実行結果の番号を参照してください。
Sub Test()
'①上部
Range("B3:D5").Borders(xlEdgeTop).LineStyle = xlContinuous
'②左部
Range("B3:D5").Borders(xlEdgeLeft).LineStyle = xlDash
'③下部
Range("B3:D5").Borders(xlEdgeBottom).LineStyle = xlDashDot
'④右部
Range("B3:D5").Borders(xlEdgeRight).LineStyle = xlDashDotDot
'⑤範囲内の縦線
Range("F3:H5").Borders(xlInsideVertical).LineStyle = xlDot
'⑥範囲内の横線
Range("F3:H5").Borders(xlInsideHorizontal).LineStyle = xlDouble
'⑦範囲内の横線
Range("F3:H5").Borders(xlDiagonalDown).LineStyle = xlSlantDashDot
End Sub
【実行結果】
セルの外枠に罫線を設定する方法
セル範囲の外枠に罫線を引く場合は、上下左右各々を指定するのではなく、BorderAroundメソッドを用います。
【基本構文】
Range(範囲).BorderAround LineStyle:=罫線の種類
【実行コード】
Sub Test()
Range("B3:D5").BorderAround LineStyle:=xlContinuous
End Sub
【実行結果】
BorderAroundプロパティを用いることで一括で指定範囲の外枠に罫線を引けました。
セル範囲に格子状に罫線を設定する方法
セル範囲に格子状に罫線を引く場合は、各々を指定するのではなく、Bordersプロパティの引数を省略することで実現できます。
【基本構文】
Range(範囲).Borders.LineStyle=罫線の種類
【実行コード】
Sub Test()
Range("B3:D5").Borders.LineStyle=xlContinuous
End Sub
【実行結果】
Bordersプロパティの引数を省略することで指定範囲に格子状に罫線が引けました。
罫線を削除する方法
削除箇所を指定して罫線を削除する方法
削除箇所を指定して罫線を削除する場合は、xlLineStyleNoneを用います。
【基本構文】
Range(範囲).Borders(削除する箇所).LineStyle = xlLineStyleNone
左部の罫線のみを削除する場合のコードを記述します。
【実行コード】
Sub Test()
Range("B3:D5").Borders.LineStyle=xlContinuous
Range("B3:D5").Borders(xlEdgeLeft).LineStyle = xlLineStyleNone
End Sub
【実行結果】
指定範囲の左側のみ罫線を削除することができました。
セル範囲すべての罫線を削除する方法
セル範囲の全ての罫線をいっぺんに削除することも可能です。
【基本構文】
指定範囲全ての罫線を引いたのと同じように、Bordersプロパティの引数を省略することで指定範囲の全ての罫線をいっぺんに削除できます。
【実行コード】
Sub Test()
Range("B3:D5").Borders.LineStyle = xlLineStyleNone
End Sub
【実行結果】
指定範囲の罫線全てが消えました。
罫線の種類・色・太さを指定する方法
罫線の種類を設定する方法
すでに罫線の種類の変更方法は説明していますが再度さっと説明します。
【基本構文】
Range(範囲).Boders(引く箇所).Linestyle = 罫線の種類
【罫線の種類】
定数 | 値 | 罫線の種類 |
---|---|---|
xlContinuous | 1 | 実線(細) |
xlDash | -4115 | 破線 |
xlDashDot | 4 | 一点鎖線 |
xlDashDotDot | 5 | 二点鎖線 |
xlDot | -4118 | 点線 |
xlDouble | -4119 | 二重線 |
xlSlantDashDot | 13 | 斜め破線 |
xlLineStyleNone | -4142 | 無し |
【実行コード】
Sub Test()
Range("B3:D5").BorderAround LineStyle:=xlDot
End Sub
【実行結果】
指定範囲の外枠に点線を引きました。
罫線の色を設定する方法
罫線の色を変更する場合は、BodersプロパティのColorプロパティを使用します。
【基本構文】
Range(範囲).Boders(引きたい箇所).Color=色
【色の対応定数】
色 | 定数 | 値 |
---|---|---|
黒 | vbBlack | 0x000000 |
赤 | vbRed | 0x0000FF |
緑 | vbGreen | 0x00FF00 |
黄 | vbYellow | 0x00FFFF |
青 | vbBlue | 0xFF0000 |
白 | vbWhite | 0xFFFFFF |
マゼンタ | vbMagenta | 0xFF00FF |
シアン | vbCyan | 0xFFFF00 |
【実行コード】
Sub Test()
Range("B3:D5").Borders.LineStyle = xlContinuous
Range("B3:D5").Borders(xlEdgeTop).Color = vbRed
End Sub
【実行結果】
指定箇所が赤色に変わりました。
罫線の太さを設定する方法
罫線の太さを変更する場合は、BodersプロパティのWeightプロパティを使用します。
【基本構文】
Range(範囲).Boders(引きたい箇所).Weight=線の太さ
【太さの対応定数】
罫線の太さ | 定数 | 値 |
---|---|---|
極細 | xlHairline | 1 |
細 | xlThin | 2 |
中 | xlMedium | -4138 |
太 | xlThick | 4 |
線の太さを指定しない場合は標準のxlThinが適用されますが、今回はxlThickを使いて太線にします。
【実行コード】
Sub Test()
Range("B3:D5").Borders.LineStyle = xlContinuous
Range("B3:D5").Borders(xlEdgeTop).Weight=xlThick
End Sub
【実行結果】
指定箇所が枠線の太さが変わりました。
追加した行に罫線を引く
ここまで解説した内容を用いて自動で罫線を入れます。冒頭に出てきた表を使用します。
上記表に社員を2名追加しました。
表ヘッダの位置と横幅を固定し、追加した社員にも自動で罫線が引かれるようにします。
【実行コード】
Sub Test()
Dim MaxRow As Long
'最終セルの行番号
MaxRow = Range("B2").SpecialCells(xlLastCell).Row
With Range("B4:G" & MaxRow)
'格子状の線を引く
.Borders(xlInsideVertical).LineStyle = xlContinuous
.Borders(xlInsideHorizontal).LineStyle = xlContinuous
'一番外側の枠線を引く
.Borders(xlEdgeTop).Weight = xlMedium
.Borders(xlEdgeLeft).Weight = xlMedium
.Borders(xlEdgeBottom).Weight = xlMedium
.Borders(xlEdgeRight).Weight = xlMedium
End With
End Sub
【実行結果】
このように自動で罫線が引けるのは表の規模が大きくなるほど便利になります。
関連記事
VBAの勉強方法は?
書籍やインターネットで学習する方法があります。昨今では、YouTubeなどの動画サイトやエンジニアのコミュニティサイトなども充実していて多くの情報が手に入ります。
そして、より効率的に知識・スキルを習得するには、知識をつけながら実際に手を動かしてみるなど、インプットとアウトプットを繰り返していくことが重要です。特に独学の場合は、有識者に質問ができたりフィードバックをもらえるような環境があると、理解度が深まるでしょう。
ただ、VBAに限らず、ITスキルを身につける際、どうしても課題にぶつかってしまうことはありますよね。特に独学だと、わからない部分をプロに質問できる機会を確保しにくく、モチベーションが続きにくいという側面があります。独学でモチベーションを維持する自信がない人にはプログラミングスクールという手もあります。費用は掛かりますが、その分スキルを身につけやすいです。しっかりと知識・スキルを習得して実践に活かしたいという人はプログラミングスクールがおすすめです。
プログラミングスクールならテックマニアがおすすめ!
ITスキル需要の高まりとともにプログラミングスクールも増えました。しかし、どのスクールに通うべきか迷ってしまう人もいるでしょう。そんな方にはテックマニアをおすすめします!これまで多くのITエンジニアを育成・輩出してきたテックマニアでもプログラミングスクールを開講しています。
<テックマニアの特徴>
・たしかな育成実績と親身な教育 ~セカンドキャリアを全力支援~
・講師が現役エンジニア ~“本当”の開発ノウハウを直に学べる~
・専属講師が学習を徹底サポート ~「わからない」を徹底解決~
・実務ベースでスキルを習得 ~実践的な凝縮カリキュラム~
このような特徴を持つテックマニアはITエンジニアのスタートラインとして最適です。
話を聞きたい・詳しく知りたいという方はこちらからお気軽にお問い合わせください。