罫線の指定について ~ Borders.item(なんちゃら)という指定
昨日は半ばお遊びで、マクロの記録で作成したコードを一行にまで圧縮してみた。
infoment.hatenablog.com
今日は、この続きを少しだけ。
昨日、罫線の種類と太さについて、少し触れてみた。しかし考えてみると、自分でもきちんと内訳を確認したことが無かった。そこで調べてみたところ(実際に描画してみたところ)、以下の関係であることが分かった。
なるほど、「xlDashDotDot」って何のこと?と思っていたが、二点鎖線のことだったのか。納得。
ところで以前から、このBordersについては一つの不満があった。例えば、こんなマクロの時。
Sub BorderTest() Range("B2").Borders(xlEdgeLeft).LineStyle = xlContinuous Range("B2").Borders(xlEdgeRight).LineStyle = xlContinuous End Sub
似たような部位があるので、Withステートメントで括りたい。しかし似ているようで、ほとんど共通部分が無いのだ。上記の例で言えば、こんな風にしかならない。
Sub BorderTest() With Range("B2") .Borders(xlEdgeLeft).LineStyle = xlContinuous .Borders(xlEdgeRight).LineStyle = xlContinuous End With End Sub
これでは行数ばかり増えて、ほとんど旨味が無い。また、マクロの記録からこの記述に見慣れていたため、この記述方法に最近まで何の疑問もなく過ごしていた。
そして最近のこと。ふと思った。例えば、シートのSelectionChangeイベントで、こんな風に書いてみる。
Private Sub Worksheet_SelectionChange(ByVal Target As Range) MsgBox Target(1).Address & vbNewLine & Target.Item(1).Address End Sub
結果、同じものが返ってきた。
これはBordersでも、同じことが言えるんじゃなかろうか。早速試してみた。
Sub BorderTest() With Range("B2").Borders .Item(xlEdgeLeft).LineStyle = xlContinuous .Item(xlEdgeRight).LineStyle = xlContinuous End With End Sub
結果、最初に書いたものと変わらぬ結果を得ることが出来た。
短くなったのは、ほんの数文字だけ。でも、個人的には満足してる。
知ってる人には、当たり前?私は、最近まで知りませんでした(TдT)
参考まで。