Borders は「セルや範囲の“罫線”をまとめて操るためのオブジェクト」
まずイメージからいきましょう。
Font が「文字の見た目」、Interior が「背景色」だとしたら、
Borders は「セルの周りの線=罫線」をまとめて管理するオブジェクトです。
表の枠線を引く
見出し行だけ太い線にする
合計行だけ上に二重線を引く
こういう「線で区切る・強調する」ことを、コードでやりたいときに登場するのが Borders です。
Range → 場所
Value → 中身
Font → 文字
Interior → 背景
Borders → 罫線
この役割分担を頭に置いておくと、整理しやすくなります。
一番基本:範囲全体に「格子状の罫線」を引く
A1:C5 に普通の罫線を引く
Sub SampleBordersBasic()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("入力")
With ws.Range("A1:C5").Borders
.LineStyle = xlContinuous ' 実線
.Weight = xlThin ' 細線
.Color = vbBlack ' 黒
End With
End Sub
VBここでやっていることは、
A1:C5 という範囲を選び
その範囲の Borders(罫線全体)に対して
線の種類(LineStyle)、太さ(Weight)、色(Color)を設定
という流れです。
重要なのは、
Range(“A1:C5”) が「場所」
その .Borders が「その範囲の罫線全体」
その中の .LineStyle, .Weight, .Color で線の見た目を決める
という階層構造です。
この書き方だけで、「表っぽい枠線」を一気に引けます。
「どの辺の罫線か」を指定する:Borders(xlEdge…) と xlInside…
外枠だけ太くする
範囲の「外側だけ」罫線を変えたいことがよくあります。
Sub SampleBordersEdge()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("入力")
With ws.Range("A1:C5")
.Borders.LineStyle = xlContinuous
.Borders.Weight = xlThin
.Borders(xlEdgeTop).Weight = xlMedium
.Borders(xlEdgeBottom).Weight = xlMedium
.Borders(xlEdgeLeft).Weight = xlMedium
.Borders(xlEdgeRight).Weight = xlMedium
End With
End Sub
VBここでは、
まず範囲全体に細い罫線を引く
そのあとで、外枠(上・下・左・右)だけ太さを太くする
という二段構えにしています。
ポイントは、Borders(どの辺か) という指定です。
xlEdgeTop → 上枠
xlEdgeBottom → 下枠
xlEdgeLeft → 左枠
xlEdgeRight → 右枠
「どの辺の線か」をこうやって指定します。
内側の線だけ変える(行間・列間)
範囲の「内側の線」だけを変えたいときは、こうします。
With ws.Range("A1:C5")
.Borders(xlInsideHorizontal).LineStyle = xlContinuous ' 行と行の間
.Borders(xlInsideVertical).LineStyle = xlContinuous ' 列と列の間
End With
VBxlInsideHorizontal → 行と行の間の線
xlInsideVertical → 列と列の間の線
「外枠」と「内側」を分けて考えられるようになると、
表のデザインをかなり細かくコントロールできます。
線の種類・太さ・色をしっかり押さえる
LineStyle(線の種類)
よく使うのはこのあたりです。
.Borders.LineStyle = xlContinuous ' 実線
.Borders.LineStyle = xlDash ' 破線
.Borders.LineStyle = xlDot ' 点線
.Borders.LineStyle = xlDouble ' 二重線
VBまずは xlContinuous(実線)と xlDouble(二重線)だけ覚えておけば十分です。
合計行の上に二重線を引く、などでよく使います。
Weight(線の太さ)
.Borders.Weight = xlHairline ' 極細
.Borders.Weight = xlThin ' 細
.Borders.Weight = xlMedium ' 中
.Borders.Weight = xlThick ' 太
VB実務では、xlThin と xlMedium をよく使います。
「普通の罫線」→ xlThin
「強調したい枠」→ xlMedium か xlThick
というイメージです。
Color(線の色)
.Borders.Color = vbBlack
.Borders.Color = vbBlue
.Borders.Color = RGB(200, 200, 200) ' 薄いグレー
VB基本は黒で十分ですが、
「エラー行の枠だけ赤くしたい」など、色で意味を持たせたいときに使えます。
Borders を使うときに意識してほしい重要ポイント
「Range → Borders → どの線 → 何を変えるか」という階層を崩さない
Borders も、単体では存在できません。
必ず「どの Range の Borders か」とセットです。
ws.Range("A1:C5").Borders.LineStyle = xlContinuous
ws.Range("A1:C5").Borders(xlEdgeBottom).Weight = xlThick
ws.Cells(5, 1).Borders(xlEdgeRight).Color = vbRed
VB全部、
Range(場所)
その Borders(罫線全体)
その中の「どの線か」(xlEdgeTop など)
その線の LineStyle / Weight / Color
という階層になっています。
この構造を意識して書けるようになると、
「今、自分はどの線をいじっているのか」が迷子になりません。
まずは「範囲全体に罫線」→「外枠だけ調整」の二段構えが分かりやすい
いきなり細かくやろうとすると混乱しやすいので、
次の順番をおすすめします。
範囲全体に、細い実線の罫線を引く
そのあとで、外枠だけ太くする・色を変える
コードにすると、こんな感じです。
With ws.Range("A1:C5")
.Borders.LineStyle = xlContinuous
.Borders.Weight = xlThin
.Borders(xlEdgeTop).Weight = xlMedium
.Borders(xlEdgeBottom).Weight = xlMedium
End With
VB「まずは全部同じにしてから、強調したいところだけ上書きする」
この考え方は、罫線に限らずいろんな場面で役に立ちます。
「どのシートの、どの範囲の罫線か」を毎回はっきり書く
避けたい書き方の例です。
Range("A1:C5").Borders.LineStyle = xlContinuous
VBこれは「アクティブなシートの A1:C5」を前提にしているので、
シートが変わると意図しない場所に罫線を引いてしまうリスクがあります。
超初心者のうちから、あえてこう書く癖をつけてください。
ThisWorkbook.Worksheets("入力").Range("A1:C5").Borders.LineStyle = xlContinuous
VBあるいは変数を使って:
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("入力")
ws.Range("A1:C5").Borders.LineStyle = xlContinuous
VB「どのブック → どのシート → どの範囲 → その Borders → どの線 → 何を変えるか」
という順番を崩さない書き方は、将来の自分をかなり助けてくれます。
まとめ:Borders は「表の“骨格”を線でデザインするためのハンドル」
Borders の本質は、
「Range に対して、その周りの罫線(どの辺・どんな線・どんな太さ・どんな色か)を制御するためのオブジェクト」
です。
押さえておきたいポイントをコンパクトにまとめると、
Range(...).Borders でその範囲の罫線全体を扱えるBorders(xlEdgeTop / xlEdgeBottom / xlInsideHorizontal など) で「どの線か」を指定できる
LineStyle(線種)、Weight(太さ)、Color(色)を組み合わせて表のデザインを作る
「どのシートのどの範囲のどの線か」を毎回はっきり書くことで、意図しない罫線ミスを防げる
