Home » Excel VBA Rangeオブジェクト » 罫線・Borders » VBAで罫線を引く

対象:Excel2003, Excel2007, Excel2010, Excel2013

「excel マクロ 罫線を入れる」
「エクセル マクロ 罫線 作る」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスが時折見られます。

Excelで罫線を引くマクロを探している方による検索です。

VBAのコーディングを手助けしてくれる便利なマクロ記録機能で、罫線を引くマクロを作ろうとしてマクロ記録をしてみて、罫線系のマクロを作るのに挫折したという方もいらっしゃるかもしれません。

[スポンサードリンク]

罫線を引くシンプルなマクロ

マクロ記録で作られる罫線マクロの読解については、Microsoft MVP for Excelの田中亨さんや、緑川吉行さんが記事を公開してらっしゃるので、そちらをご参照いただくとして、ここでは実務ですぐ使えそうな、シンプルなマクロをご紹介しておきます。

Sub 選択されたセル範囲に罫線を引く()
 If TypeName(Selection) <> "Range" Then Exit Sub

 With Selection
' 選択範囲全体に格子罫線を引く
  With .Borders
   .LineStyle = xlContinuous
   .Weight = xlThin
  End With

' 内側の水平方向の罫線を引く
  With .Borders(xlInsideHorizontal)
   .LineStyle = xlDot
   .Weight = xlHairline
  End With
 End With
End Sub

上記のマクロを実行すると、選択されたセル範囲で、表の外枠と縦線は実線で、表内の横線は細い点線で、罫線が引かれます。

まず、選択範囲全体を操作対象として、
  With Selection

更に、その範囲の罫線全体・Bordersコレクションオブジェクトを操作対象として、
   With .Borders
プロパティを指定していきます。

罫線の種類・LineStyleプロパティをxlContinuous(実線)にして、
    .LineStyle = xlContinuous

罫線の太さ・WeightプロパティをxlThin(極細)にしています。
    .Weight = xlThin

ここまでの、
  With Selection
   With .Borders
    .LineStyle = xlContinuous
    .Weight = xlThin
   End With
で、格子線が選択範囲全体に引かれます。

その後の
  With .Borders(xlInsideHorizontal)
   .LineStyle = xlDot
   .Weight = xlHairline
  End With
が、表の中の横線だけを変更している部分です。

Bodersプロパティの引数に定数・xlInsideHorizontalを指定することで、
  With .Borders(xlInsideHorizontal)
表内の水平線だけを意味するBoderオブジェクトを操作対象として、

罫線の種類・LineStyleプロパティをxlDot(点線)にして、
   .LineStyle = xlDot

罫線の太さ・WeightプロパティをxlHairline(最も細い罫線)にしています。
   .Weight = xlHairline

セル以外のものが選択されているときにエラーとならないように、上記の処理に入る前に、何が選択されているのかをチェックして、セル範囲でなければマクロを終了しています。
  If TypeName(Selection) <> "Range" Then Exit Sub

セル範囲を選択したくない場合

上記のマクロは、罫線を引きたいセル範囲を事前に選択する仕様になっていますが、表のサイズが大きかったりして、事前にセル範囲を選択するのが面倒というケースもあるでしょう。

その場合、表の途中に空白行や空白列がないのであれば、
  With Selection

  With ActiveCell.CurrentRegion
に修正して、罫線を引きたい表の中のいずれかのセルを選択しておいてから実行すればOKです。

最終更新日時:2021-06-15 09:35

[スポンサードリンク]

Home » Excel VBA Rangeオブジェクト » 罫線・Borders » VBAで罫線を引く

Copyright © インストラクターのネタ帳 All Rights Reserved.
.