Excel。マクロ028。知ると便利な罫線の引き方。
<Excel VBA>
Excel VBAを使わずに、マクロの記録(操作記録方式)ではダメなんですかね?というご質問を受けることがありますが、
比較するのにわかりやすいものの中に、『罫線』があります。
では次の表を使ってマクロ記録で、罫線の格子を引いてみましょう。
開発タブのマクロの記録を実行します。
では、その構文を確認してみると…
なんか、とんでもない行数の構文になってしまっていますよね。
原因は、セルの書式ダイアログボックスを見れば、わかります。
罫線のボタンをごらんください。
上・左・右・下と、水平と垂直の線の6か所の設定をしていますよね。
Excel VBAの構文を見てみると、
上(xlEdgeTop)
左(xlEdgeLeft)
右(xlEdgeRight)
下(xlEdgeBottom)
水平(xlInsaidVertical)
垂直(xlInsaidHorizontal)
の6か所に関して書いていますよね。
しかも、それぞれ
線の種類のLineStyle
色のColorIndex
線の太さのWeight
の各プロパティを設定していますので、構文が長くなってしまったのです。
このように、マクロの記録という操作記録方式では、
不要であっても全部記録してしまうのです。
この点からも、Excel VBAを使って書いてみると、
すごくコンパクトに作ることが出来るのです。
では、今度は、Excel VBAで格子の罫線を引いてみましょう。
さらに、外枠太罫線にしてみましょう。
Sub 罫線()
Range("a1").CurrentRegion.Borders.LineStyle = xlContinuous
Range("a1").CurrentRegion.BorderAround Weight:=xlMedium
End Sub
では、実行してみましょう。
格子に外枠太罫線が引けていますね。
マクロの記録では、プログラム文の行数も多かったのに、今回は、2行。
しかも、外枠太罫線にしていて、2行で収まっていますよね。
当然、メンテナンスも楽です。
それでは、このプログラム文の説明をしてみましょう。
Range("a1").CurrentRegion は、お馴染みですね。
A1から接続している範囲を選択する。
つまり、表を選択するという意味ですね。
Borders.LineStyle = xlContinuous は、
格子罫線を設定するという意味ですね。
このBordersコレクションは、右とか左とか指定しないで使うと、
四辺全部という意味になるので、マクロの記録であったような、
上や下などの設定をしなくてもいいので、
この1行だけで、マクロの記録で作ったものと、同じ意味になるわけです。
よって、A1:B21と範囲選択しなくても、
A1からの表に格子罫線を設定することが出来たわけですね。
2行目の、外枠太罫線も確認しておきましょう。
Range("a1").CurrentRegion. は、
A1からの表を選択するという意味でしたね。
BorderAround Weight:=xlMedium のうち、
Weight:=xlMedium は、太罫線という意味です。
そして、BorderAroundですが、四辺ではなくて、
外枠罫線を引くという意味です。
1行目のBordersコレクションを使ってしまうと、
四辺に罫線を設定してしまうので、格子罫線ではなくて、
四辺が太罫線になってしまいますので、
Bordersコレクションは使えませんので、注意が必要ですね。
このように、マクロの記録でもいいのですが、
Excel VBAを知ることで、効率的かつ、
メンテナンスしやすいExcel VBA構文を作ることが出来ますので、
少しずつ慣れていくといいですね。