「excel マクロ 罫線を入れる」
「エクセル マクロ 罫線 作る」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスが時折見られます。
Excelで罫線を引くマクロを探している方による検索です。
VBAのコーディングを手助けしてくれる便利なマクロ記録機能で、罫線を引くマクロを作ろうとしてマクロ記録をしてみて、罫線系のマクロを作るのに挫折したという方もいらっしゃるかもしれません。
罫線を引くシンプルなマクロ
マクロ記録で作られる罫線マクロの読解については、Microsoft MVP for Excelの田中亨さんや、緑川吉行さんが記事を公開してらっしゃるので、そちらをご参照いただくとして、ここでは実務ですぐ使えそうな、シンプルなマクロをご紹介しておきます。
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で罫線を引く